summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2016-01-28 21:01:51 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2016-01-28 21:01:51 +0000
commitf4881661cc4da325197d6f7e03125cc61bb994b4 (patch)
tree0e91493a3696c4bd10d24e0215970c43f5c935fb
parent3c8e7539c5905bfb2af3a74bbef9a4a5c26eed5d (diff)
downloadgcc-f4881661cc4da325197d6f7e03125cc61bb994b4.tar.gz
PR middle-end/69542
* lra-remat.c (calculate_local_reg_remat_bb_data): Only consider non-debug insns. * gcc.dg/torture/pr69542.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232946 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/lra-remat.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr69542.c37
4 files changed, 49 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c2df5a036fc..4df81d56a19 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-01-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/69542
+ * lra-remat.c (calculate_local_reg_remat_bb_data): Only consider
+ non-debug insns.
+
2016-01-28 Pat Haugen <pthaugen@us.ibm.com>
* config/rs6000/rs6000.c (output_cbranch): Don't statically predict
diff --git a/gcc/lra-remat.c b/gcc/lra-remat.c
index 4d8099fcd8e..e729ea93298 100644
--- a/gcc/lra-remat.c
+++ b/gcc/lra-remat.c
@@ -694,7 +694,7 @@ calculate_local_reg_remat_bb_data (void)
FOR_EACH_BB_FN (bb, cfun)
FOR_BB_INSNS (bb, insn)
- if (INSN_P (insn))
+ if (NONDEBUG_INSN_P (insn))
set_bb_regs (bb, insn);
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6e5e2188153..a378dd62ca4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-01-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/69542
+ * gcc.dg/torture/pr69542.c: New test.
+
2016-01-28 Wilco Dijkstra <wdijkstr@arm.com>
* gcc.target/aarch64/ccmp_1.c: Fix test issue.
diff --git a/gcc/testsuite/gcc.dg/torture/pr69542.c b/gcc/testsuite/gcc.dg/torture/pr69542.c
new file mode 100644
index 00000000000..ced5c326ac8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr69542.c
@@ -0,0 +1,37 @@
+/* PR middle-end/69542 */
+/* { dg-do compile } */
+/* { dg-additional-options "-fcompare-debug" } */
+
+typedef struct A *B;
+extern int *a[];
+struct C { B b; struct D *d; };
+struct A { struct { struct C e[1]; long long f[1]; } u; };
+struct D { int g; B h[100]; };
+int b, c, e, g;
+B d, f;
+void foo (void) __attribute__ ((__noreturn__));
+int bar (void)
+{
+ int i = 0;
+ do
+ {
+ if ('E' && a[e][0] != 'V')
+ foo ();
+ struct D *k = d->u.e[0].d;
+ B x = k->h[i], o = f->u.e[0].b;
+ if (b)
+ return 0;
+ if (a[g][0] != 'E' && a[g][0] != 'V')
+ foo ();
+ struct D *n = o->u.e[0].d;
+ int r = x->u.f[0];
+ (void) r;
+ if (c)
+ foo ();
+ B y = n->h[x->u.f[0]];
+ if (i != y->u.f[0])
+ return 0;
+ i++;
+ }
+ while (1);
+}