diff options
author | Steven Bosscher <steven@gcc.gnu.org> | 2007-02-18 22:33:23 +0000 |
---|---|---|
committer | Steven Bosscher <steven@gcc.gnu.org> | 2007-02-18 22:33:23 +0000 |
commit | 8800a9b349e790a867c3dd1a7a7807929e97e400 (patch) | |
tree | a3df7eb8adb0f115eb006dd8b2e382fe076b9a22 /gcc | |
parent | 03f79051aed05fa47ae45bebc93083b6777e2896 (diff) | |
download | gcc-8800a9b349e790a867c3dd1a7a7807929e97e400.zip gcc-8800a9b349e790a867c3dd1a7a7807929e97e400.tar.gz gcc-8800a9b349e790a867c3dd1a7a7807929e97e400.tar.bz2 |
re PR rtl-optimization/30773 (Spec cpu2k6/h264ref and sphinx3 miscompare regression)
PR rtl-optimization/30773
* local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
if we fail to attach a REG_EQUIV note.
From-SVN: r122106
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/local-alloc.c | 7 |
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c797248..f2aedd4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-02-18 Steven Bosscher <steven@gcc.gnu.org> + + PR rtl-optimization/30773 + * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init + if we fail to attach a REG_EQUIV note. + 2007-02-18 David Edelsohn <edelsohn@gnu.org> Roger Sayle <roger@eyesopen.com> diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c index 6f24968..f46b9c9 100644 --- a/gcc/local-alloc.c +++ b/gcc/local-alloc.c @@ -1062,10 +1062,11 @@ update_equiv_regs (void) { rtx init_insn = XEXP (reg_equiv[regno].init_insns, 0); if (validate_equiv_mem (init_insn, src, dest) - && ! memref_used_between_p (dest, init_insn, insn)) + && ! memref_used_between_p (dest, init_insn, insn) + /* Attaching a REG_EQUIV note will fail if INIT_INSN has + multiple sets. */ + && set_unique_reg_note (init_insn, REG_EQUIV, copy_rtx (dest))) { - set_unique_reg_note (init_insn, REG_EQUIV, copy_rtx (dest)); - /* This insn makes the equivalence, not the one initializing the register. */ reg_equiv_init[regno] |