diff options
author | J"orn Rennecke <amylaar@cygnus.co.uk> | 1999-03-17 13:31:30 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 1999-03-17 13:31:30 +0000 |
commit | 13bb79d45ec025042ffaa3a359222d32eb5a7dff (patch) | |
tree | a6a0ccf73646fb9d4f8986abffb05232e577bd6c | |
parent | f541e78dd0e404a264df6bb1050d552a03007deb (diff) | |
download | gcc-13bb79d45ec025042ffaa3a359222d32eb5a7dff.zip gcc-13bb79d45ec025042ffaa3a359222d32eb5a7dff.tar.gz gcc-13bb79d45ec025042ffaa3a359222d32eb5a7dff.tar.bz2 |
reload1.c (eliminate_regs): Don't keep REG_DEAD notes around for things that were eliminated.
* reload1.c (eliminate_regs): Don't keep REG_DEAD notes around for
things that were eliminated.
From-SVN: r25823
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/reload1.c | 12 |
2 files changed, 16 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 831320f..ac3b773 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Wed Mar 17 21:29:12 1999 J"orn Rennecke <amylaar@cygnus.co.uk> + + * reload1.c (eliminate_regs): Don't keep REG_DEAD notes around for + things that were eliminated. + Wed Mar 17 12:16:26 1999 Richard Henderson <rth@cygnus.com> * function.c (fixup_var_refs_1): First try moving the expression diff --git a/gcc/reload1.c b/gcc/reload1.c index 1e83d5f..02002fd 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -2914,7 +2914,17 @@ eliminate_regs (x, mem_mode, insn) { new = eliminate_regs (XEXP (x, 0), mem_mode, insn); if (new != XEXP (x, 0)) - x = gen_rtx_EXPR_LIST (REG_NOTE_KIND (x), new, XEXP (x, 1)); + { + /* If this is a REG_DEAD note, it is not valid anymore. + Using the eliminated version could result in creating a + REG_DEAD note for the stack or frame pointer. */ + if (GET_MODE (x) == REG_DEAD) + return (XEXP (x, 1) + ? eliminate_regs (XEXP (x, 1), mem_mode, insn) + : NULL_RTX); + + x = gen_rtx_EXPR_LIST (REG_NOTE_KIND (x), new, XEXP (x, 1)); + } } /* ... fall through ... */ |