aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGeoffrey Keating <geoffk@redhat.com>2001-11-09 23:06:04 +0000
committerGeoffrey Keating <geoffk@gcc.gnu.org>2001-11-09 23:06:04 +0000
commitff6051b76e5f031a6bfc0c1f25a51034df1e4902 (patch)
tree1c401918c7bcbdded039a4ef338ec2822a5c81af /gcc
parent322fe6e185b1a4470827b5ffbbda9fb1ecf0ea4b (diff)
downloadgcc-ff6051b76e5f031a6bfc0c1f25a51034df1e4902.zip
gcc-ff6051b76e5f031a6bfc0c1f25a51034df1e4902.tar.gz
gcc-ff6051b76e5f031a6bfc0c1f25a51034df1e4902.tar.bz2
flow.c (insn_dead_p): Allow for AUTO_INC notes all the time.
* flow.c (insn_dead_p): Allow for AUTO_INC notes all the time. In testsuite/: * gcc.c-torture/execute/20011109-2.c: New test. From-SVN: r46901
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog2
-rw-r--r--gcc/flow.c23
-rw-r--r--gcc/testsuite/ChangeLog2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20011109-2.c10
4 files changed, 24 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0632c7b..8e7d9e7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,7 @@
2001-11-09 Geoffrey Keating <geoffk@redhat.com>
+ * flow.c (insn_dead_p): Allow for AUTO_INC notes all the time.
+
* config/stormy16/stormy16.h (ASM_SPEC): Revert last change,
don't pass --gdwarf2 to the assembler if the compiler will also
provide debug info.
diff --git a/gcc/flow.c b/gcc/flow.c
index 50e7494..fbe570b 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -1892,21 +1892,18 @@ insn_dead_p (pbi, x, call_ok, notes)
enum rtx_code code = GET_CODE (x);
#ifdef AUTO_INC_DEC
- /* If flow is invoked after reload, we must take existing AUTO_INC
- expresions into account. */
- if (reload_completed)
+ /* As flow is invoked after combine, we must take existing AUTO_INC
+ expressions into account. */
+ for (; notes; notes = XEXP (notes, 1))
{
- for (; notes; notes = XEXP (notes, 1))
+ if (REG_NOTE_KIND (notes) == REG_INC)
{
- if (REG_NOTE_KIND (notes) == REG_INC)
- {
- int regno = REGNO (XEXP (notes, 0));
-
- /* Don't delete insns to set global regs. */
- if ((regno < FIRST_PSEUDO_REGISTER && global_regs[regno])
- || REGNO_REG_SET_P (pbi->reg_live, regno))
- return 0;
- }
+ int regno = REGNO (XEXP (notes, 0));
+
+ /* Don't delete insns to set global regs. */
+ if ((regno < FIRST_PSEUDO_REGISTER && global_regs[regno])
+ || REGNO_REG_SET_P (pbi->reg_live, regno))
+ return 0;
}
}
#endif
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1b598d7..7fa8c9e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,7 @@
2001-11-09 Geoffrey Keating <geoffk@redhat.com>
+ * gcc.c-torture/execute/20011109-2.c: New test.
+
* gcc.c-torture/execute/20011109-1.c: New test.
2001-11-09 Jakub Jelinek <jakub@redhat.com>
diff --git a/gcc/testsuite/gcc.c-torture/execute/20011109-2.c b/gcc/testsuite/gcc.c-torture/execute/20011109-2.c
new file mode 100644
index 0000000..1abbbf2
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20011109-2.c
@@ -0,0 +1,10 @@
+int main(void)
+{
+ char *c1 = "foo";
+ char *c2 = "foo";
+ int i;
+ for (i = 0; i < 3; i++)
+ if (c1[i] != c2[i])
+ abort ();
+ exit (0);
+}