]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR regression/59923 (ICE in maybe_record_trace_start, at dwarf2cfi.c:2239 with...
authorJakub Jelinek <jakub@redhat.com>
Thu, 30 Jan 2014 21:48:08 +0000 (22:48 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 30 Jan 2014 21:48:08 +0000 (22:48 +0100)
PR target/59923
* ifcvt.c (cond_exec_process_insns): Don't conditionalize
frame related instructions.

* gcc.target/arm/pr59923.c: New test.

From-SVN: r207324

gcc/ChangeLog
gcc/ifcvt.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arm/pr59923.c [new file with mode: 0644]

index eae504134aaf282e786b4f6e25499010ca042e47..d78cf54375d9fb9eb0b20fa7722e5ce1569e79f1 100644 (file)
@@ -1,3 +1,9 @@
+2014-01-30  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/59923
+       * ifcvt.c (cond_exec_process_insns): Don't conditionalize
+       frame related instructions.
+
 2014-01-30  Vladimir Makarov  <vmakarov@redhat.com>
 
        PR rtl-optimization/59959
index 51293651e9cc5fe63491bd6e45756ccb69a1fd74..e4b3e8dade95948ae240f9c559734ce1fab405d0 100644 (file)
@@ -338,6 +338,10 @@ cond_exec_process_insns (ce_if_block *ce_info ATTRIBUTE_UNUSED,
 
       gcc_assert (NONJUMP_INSN_P (insn) || CALL_P (insn));
 
+      /* dwarf2out can't coope with conditional unwind info.  */
+      if (RTX_FRAME_RELATED_P (insn))
+       return FALSE;
+
       /* Remove USE insns that get in the way.  */
       if (reload_completed && GET_CODE (PATTERN (insn)) == USE)
        {
index d8d8c076bda3fbb455cb3f2d5867bf98594efe57..597029adf36e3868210f361192818492af642c17 100644 (file)
@@ -1,3 +1,8 @@
+2014-01-30  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/59923
+       * gcc.target/arm/pr59923.c: New test.
+
 2014-01-30  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
        * gcc.dg/vmx/splat.c: New.
diff --git a/gcc/testsuite/gcc.target/arm/pr59923.c b/gcc/testsuite/gcc.target/arm/pr59923.c
new file mode 100644 (file)
index 0000000..86a4e7d
--- /dev/null
@@ -0,0 +1,24 @@
+/* PR target/59923 */
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_thumb2_ok } */
+/* { dg-options "-O2 -mcpu=cortex-a15 -fno-strict-aliasing -mthumb -g" } */
+
+struct S
+{
+  void *s;
+  struct T { unsigned short a; unsigned char b[4], c[4]; } *t;
+} s;
+void bar (void *);
+
+void
+foo (struct S *x, int *y)
+{
+  if (*y > 0)
+    return;
+  else if (x->t->b[0] == 0x43 && x->t->b[1] == 0x6d && x->t->c[0] == 1)
+    x->s = &s;
+  else
+    *y = 16384;
+  if (*y > 0)
+    bar (x);
+}