diff options
author | Andreas Krebbel <krebbel1@de.ibm.com> | 2007-10-28 10:14:21 +0000 |
---|---|---|
committer | Andreas Krebbel <krebbel@gcc.gnu.org> | 2007-10-28 10:14:21 +0000 |
commit | 137e9a70b73b7077073fd97bea30f6a148daeae7 (patch) | |
tree | 5428021c4a21da831fb98d6cb297d06cef563f3e /gcc/dce.c | |
parent | c7a7567d5248031d457dbe8ba0923fcfa1db0173 (diff) | |
download | gcc-137e9a70b73b7077073fd97bea30f6a148daeae7.zip gcc-137e9a70b73b7077073fd97bea30f6a148daeae7.tar.gz gcc-137e9a70b73b7077073fd97bea30f6a148daeae7.tar.bz2 |
dce.c (delete_unmarked_insns): Just delete the RETVAL and LIBCALL notes if...
2007-10-28 Andreas Krebbel <krebbel1@de.ibm.com>
* dce.c (delete_unmarked_insns): Just delete the RETVAL and
LIBCALL notes if they are about to be moved to the same insn.
From-SVN: r129693
Diffstat (limited to 'gcc/dce.c')
-rw-r--r-- | gcc/dce.c | 15 |
1 files changed, 11 insertions, 4 deletions
@@ -346,10 +346,17 @@ delete_unmarked_insns (void) rtx new_libcall_insn = next_real_insn (insn); rtx retval_note = find_reg_note (XEXP (note, 0), REG_RETVAL, NULL_RTX); - REG_NOTES (new_libcall_insn) - = gen_rtx_INSN_LIST (REG_LIBCALL, XEXP (note, 0), - REG_NOTES (new_libcall_insn)); - XEXP (retval_note, 0) = new_libcall_insn; + /* If the RETVAL and LIBCALL notes would land on the same + insn just remove them. */ + if (XEXP (note, 0) == new_libcall_insn) + remove_note (new_libcall_insn, retval_note); + else + { + REG_NOTES (new_libcall_insn) + = gen_rtx_INSN_LIST (REG_LIBCALL, XEXP (note, 0), + REG_NOTES (new_libcall_insn)); + XEXP (retval_note, 0) = new_libcall_insn; + } } /* If the insn contains a REG_RETVAL note and is dead, but the |