diff options
author | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-09-05 05:31:37 +0000 |
---|---|---|
committer | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-09-05 05:31:37 +0000 |
commit | 19137b622b9fd357de36a78f343390e3ff42a677 (patch) | |
tree | cd7bcf09d04d0b5ca7d8e3d962ba7dcd790a2eab /gcc/lower-subreg.c | |
parent | c22e07a3ff98bd2a8d4947118bde62397c52c4fb (diff) | |
download | gcc-19137b622b9fd357de36a78f343390e3ff42a677.tar.gz |
PR middle-end/33029
* lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL
note, remove the associated REG_RETVAL note.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128119 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lower-subreg.c')
-rw-r--r-- | gcc/lower-subreg.c | 6 |
1 files changed, 4 insertions, 2 deletions
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; } |