From 137e9a70b73b7077073fd97bea30f6a148daeae7 Mon Sep 17 00:00:00 2001 From: Andreas Krebbel Date: Sun, 28 Oct 2007 10:14:21 +0000 Subject: [PATCH] dce.c (delete_unmarked_insns): Just delete the RETVAL and LIBCALL notes if... 2007-10-28 Andreas Krebbel * 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 --- gcc/ChangeLog | 5 +++++ gcc/dce.c | 15 +++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 78bb02d48f6..ef136a53d87 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2007-10-28 Andreas Krebbel + + * dce.c (delete_unmarked_insns): Just delete the RETVAL and + LIBCALL notes if they are about to be moved to the same insn. + 2007-10-27 Richard Guenther PR tree-optimization/33870 diff --git a/gcc/dce.c b/gcc/dce.c index bf8e7a3bc0e..e63a07a9ef4 100644 --- a/gcc/dce.c +++ b/gcc/dce.c @@ -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 -- 2.30.2