aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/gcse.c2
-rw-r--r--gcc/reload1.c2
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/gcc.dg/pr46252.c15
5 files changed, 25 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2ccafe1..275d476 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2010-11-03 Jakub Jelinek <jakub@redhat.com>
+ PR debug/46252
+ * reload1.c (delete_dead_insn): Use prev_active_insn instead of
+ prev_real_insn.
+ * gcse.c (insert_insn_end_basic_block): Likewise.
+
PR rtl-optimization/46034
PR rtl-optimization/46212
PR rtl-optimization/46248
diff --git a/gcc/gcse.c b/gcc/gcse.c
index 39a5d22..70f0fac 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -3574,7 +3574,7 @@ insert_insn_end_basic_block (struct expr *expr, basic_block bb)
the new instruction just before the tablejump. */
if (GET_CODE (PATTERN (insn)) == ADDR_VEC
|| GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC)
- insn = prev_real_insn (insn);
+ insn = prev_active_insn (insn);
#ifdef HAVE_cc0
/* FIXME: 'twould be nice to call prev_cc0_setter here but it aborts
diff --git a/gcc/reload1.c b/gcc/reload1.c
index c8fd33a..7fd88c1 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -2112,7 +2112,7 @@ spill_failure (rtx insn, enum reg_class rclass)
static void
delete_dead_insn (rtx insn)
{
- rtx prev = prev_real_insn (insn);
+ rtx prev = prev_active_insn (insn);
rtx prev_dest;
/* If the previous insn sets a register that dies in our insn, delete it
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 439dd5c..bb14d86 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,8 @@
2010-11-03 Jakub Jelinek <jakub@redhat.com>
+ PR debug/46252
+ * gcc.dg/pr46252.c: New test.
+
PR rtl-optimization/46034
PR rtl-optimization/46212
PR rtl-optimization/46248
diff --git a/gcc/testsuite/gcc.dg/pr46252.c b/gcc/testsuite/gcc.dg/pr46252.c
new file mode 100644
index 0000000..70bf21d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr46252.c
@@ -0,0 +1,15 @@
+/* PR debug/46252 */
+/* { dg-do compile } */
+/* { dg-options "-O -frerun-cse-after-loop -fno-tree-loop-optimize -funroll-loops -fcompare-debug" } */
+
+void
+foo (float *f)
+{
+ int i;
+ for (i = 0; i < 4; i++)
+ f[i] = i;
+ bar ();
+ for (i = 0; i < 4; i++)
+ if (f[i] != i)
+ __builtin_abort ();
+}