diff options
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/lower-subreg.c | 6 |
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c390cb5afd9..6df72e816af 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-09-04 Steven Bosscher <steven@gcc.gnu.org> + + PR middle-end/33029 + * lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL + note, remove the associated REG_RETVAL note. + 2007-09-04 Andrew Pinski <andrew_pinski@playstation.sony.com> * config.gcc (powerpc*-*-*): Install @@ -8463,7 +8469,6 @@ PR tree-optimization/19590 * tree-vrp.c (adjust_range_with_scev): Set the range when the result of scev is a constant. - * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New. 2007-06-21 Kenneth Zadeck <zadeck@naturalbridge.com> diff --git a/gcc/lower-subreg.c b/gcc/lower-subreg.c index 4354640a701..696ec61e58d 100644 --- a/gcc/lower-subreg.c +++ b/gcc/lower-subreg.c @@ -897,7 +897,7 @@ resolve_simple_move (rtx set, rtx insn) static bool resolve_clobber (rtx pat, rtx insn) { - rtx reg; + rtx reg, note; enum machine_mode orig_mode; unsigned int words, i; int ret; @@ -909,8 +909,10 @@ resolve_clobber (rtx pat, rtx insn) /* If this clobber has a REG_LIBCALL note, then it is the initial clobber added by emit_no_conflict_block. We were able to decompose the register, so we no longer need the clobber. */ - if (find_reg_note (insn, REG_LIBCALL, NULL_RTX) != NULL_RTX) + note = find_reg_note (insn, REG_LIBCALL, NULL_RTX); + if (note != NULL_RTX) { + remove_retval_note (XEXP (note, 0)); delete_insn (insn); return true; } |