summaryrefslogtreecommitdiff
path: root/gcc/lower-subreg.c
diff options
context:
space:
mode:
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2007-08-07 16:48:00 +0000
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2007-08-07 16:48:00 +0000
commit58e13bdf758b37b53ccb81d8f8b058eb5b5d37f9 (patch)
treebf15b2ea666a009b162b64e34e2ecf9dd25bd082 /gcc/lower-subreg.c
parent046553d4e843df2c6d1ab94ef563eabbc7360642 (diff)
downloadgcc-58e13bdf758b37b53ccb81d8f8b058eb5b5d37f9.tar.gz
* lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
note, just delete the insn. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127273 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lower-subreg.c')
-rw-r--r--gcc/lower-subreg.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/lower-subreg.c b/gcc/lower-subreg.c
index 4cb2ca8cabe..288566d87b5 100644
--- a/gcc/lower-subreg.c
+++ b/gcc/lower-subreg.c
@@ -906,6 +906,15 @@ resolve_clobber (rtx pat, rtx insn)
if (!resolve_reg_p (reg) && !resolve_subreg_p (reg))
return false;
+ /* 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)
+ {
+ delete_insn (insn);
+ return true;
+ }
+
orig_mode = GET_MODE (reg);
words = GET_MODE_SIZE (orig_mode);
words = (words + UNITS_PER_WORD - 1) / UNITS_PER_WORD;