From bf07bf98a8277a332920f508ae5d22f29c0dd450 Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 3 Nov 2010 08:38:42 +0000 Subject: [PATCH] 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. * gcc.dg/pr46252.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166232 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/gcse.c | 2 +- gcc/reload1.c | 2 +- gcc/testsuite/ChangeLog | 3 +++ gcc/testsuite/gcc.dg/pr46252.c | 15 +++++++++++++++ 5 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr46252.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2ccafe18338..275d476343f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2010-11-03 Jakub Jelinek + 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 39a5d223338..70f0fac0ed4 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 c8fd33a62a8..7fd88c1f43a 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 439dd5ccc51..bb14d86f396 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2010-11-03 Jakub Jelinek + 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 00000000000..70bf21d6c07 --- /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 (); +} -- 2.11.0