diff --git a/package/gcc/arc-2017.09-release/0001-fix-checking-for-jumps.patch b/package/gcc/arc-2017.09-release/0001-fix-checking-for-jumps.patch new file mode 100644 index 0000000000..ce78fac2e6 --- /dev/null +++ b/package/gcc/arc-2017.09-release/0001-fix-checking-for-jumps.patch @@ -0,0 +1,49 @@ +From c2694d3739d90ea3350b42252638b604a2c122b7 Mon Sep 17 00:00:00 2001 +From: Claudiu Zissulescu +Date: Tue, 7 Nov 2017 20:16:41 +0200 +Subject: [PATCH] [FIX][ZOL] fix checking for jumps + +Signed-off-by: Evgeniy Didin +--- + gcc/config/arc/arc.c | 3 ++- + gcc/testsuite/gcc.target/arc/loop-4.c | 14 ++++++++++++++ + 2 files changed, 16 insertions(+), 1 deletion(-) + create mode 100644 gcc/testsuite/gcc.target/arc/loop-4.c + +diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c +index 22eeb34a371..5d367499d03 100644 +--- a/gcc/config/arc/arc.c ++++ b/gcc/config/arc/arc.c +@@ -7505,7 +7505,8 @@ hwloop_optimize (hwloop_info loop) + && INSN_P (last_insn) + && (JUMP_P (last_insn) || CALL_P (last_insn) + || GET_CODE (PATTERN (last_insn)) == SEQUENCE +- || JUMP_P (prev_active_insn (last_insn)) ++ || (prev_active_insn (last_insn) ++ && JUMP_P (prev_active_insn (last_insn))) + /* At this stage we can have (insn (clobber (mem:BLK + (reg)))) instructions, ignpre them. */ + || (GET_CODE (PATTERN (last_insn)) != CLOBBER +diff --git a/gcc/testsuite/gcc.target/arc/loop-4.c b/gcc/testsuite/gcc.target/arc/loop-4.c +new file mode 100644 +index 00000000000..99a93a74d1e +--- /dev/null ++++ b/gcc/testsuite/gcc.target/arc/loop-4.c +@@ -0,0 +1,14 @@ ++/* { dg-do assemble } */ ++/* { dg-do compile } */ ++/* { dg-options "-Os" } */ ++ ++ ++void fn1(void *p1, int p2, int p3) ++{ ++ char *d = p1; ++ do ++ *d++ = p2; ++ while (--p3); ++} ++ ++/* { dg-final { scan-assembler "lp_count" } } */ +-- +2.11.0 +