diff options
author | Geoffrey Keating <geoffk@redhat.com> | 2001-11-09 23:06:04 +0000 |
---|---|---|
committer | Geoffrey Keating <geoffk@gcc.gnu.org> | 2001-11-09 23:06:04 +0000 |
commit | ff6051b76e5f031a6bfc0c1f25a51034df1e4902 (patch) | |
tree | 1c401918c7bcbdded039a4ef338ec2822a5c81af | |
parent | 322fe6e185b1a4470827b5ffbbda9fb1ecf0ea4b (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/flow.c | 23 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/20011109-2.c | 10 |
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. @@ -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); +} |