aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGreta Yorsh <greta.yorsh@arm.com>2012-07-11 09:41:37 +0100
committerGreta Yorsh <gretay@gcc.gnu.org>2012-07-11 09:41:37 +0100
commitc48acc4f0a390ee7d6036078471572ece8a1668e (patch)
tree463887e7fe54c8c784bf98b6a7288e4ee77f80b6 /gcc
parentb0af456aadd6fd46d30ff3a59157f94a43009f77 (diff)
downloadgcc-c48acc4f0a390ee7d6036078471572ece8a1668e.zip
gcc-c48acc4f0a390ee7d6036078471572ece8a1668e.tar.gz
gcc-c48acc4f0a390ee7d6036078471572ece8a1668e.tar.bz2
re PR target/53859 (ICE when calculate insn latency for armv7e-m arch in O2 level)
2012-07-10 Greta Yorsh <Greta.Yorsh@arm.com> gcc/ PR target/53859 * config/arm/arm.c (arm_early_load_addr_dep): Handle new epilogue patterns. gcc/testsuite PR target/53859 * gcc.target/arm/pr53859.c: New test. From-SVN: r189423
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/arm/arm.c7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/arm/pr53859.c11
4 files changed, 28 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7c2a800..b7da441 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2012-07-11 Greta Yorsh <Greta.Yorsh@arm.com>
+
+ PR target/53859
+ * config/arm/arm.c (arm_early_load_addr_dep): Handle new
+ epilogue patterns.
+
2012-07-11 Jonathan Wakely <jwakely.gcc@gmail.com>
* doc/extend.texi (Namespace Association): Alter cautionary text.
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 0639beb..9748dda 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -23659,7 +23659,12 @@ arm_early_load_addr_dep (rtx producer, rtx consumer)
if (GET_CODE (addr) == COND_EXEC)
addr = COND_EXEC_CODE (addr);
if (GET_CODE (addr) == PARALLEL)
- addr = XVECEXP (addr, 0, 0);
+ {
+ if (GET_CODE (XVECEXP (addr, 0, 0)) == RETURN)
+ addr = XVECEXP (addr, 0, 1);
+ else
+ addr = XVECEXP (addr, 0, 0);
+ }
addr = XEXP (addr, 1);
return reg_overlap_mentioned_p (value, addr);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3de1578..cd9d0a8 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-07-11 Greta Yorsh <Greta.Yorsh@arm.com>
+
+ PR target/53859
+ * gcc.target/arm/pr53859.c: New test.
+
2012-07-10 Oleg Endo <olegendo@gcc.gnu.org>
PR target/53886
diff --git a/gcc/testsuite/gcc.target/arm/pr53859.c b/gcc/testsuite/gcc.target/arm/pr53859.c
new file mode 100644
index 0000000..003489e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr53859.c
@@ -0,0 +1,11 @@
+/* PR target/53859 */
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_thumb2_ok } */
+/* { dg-options "-mcpu=cortex-m4 -mthumb -O2" } */
+
+void bar (int,int,char* ,int);
+
+void foo (char c)
+{
+ bar (1,2,&c,3);
+}