summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2007-08-07 16:48:00 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2007-08-07 16:48:00 +0000
commit992669047c537067eaf71906950ef76f620ba2da (patch)
treebf15b2ea666a009b162b64e34e2ecf9dd25bd082 /gcc
parent049e9ad97ecf7140dea055c6f80473396f2d2fb9 (diff)
downloadgcc-992669047c537067eaf71906950ef76f620ba2da.tar.gz
lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL note, just delete the insn.
* lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL note, just delete the insn. From-SVN: r127273
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/lower-subreg.c9
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9e0e4bffc9d..fa267ee2c7f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2007-08-07 Ian Lance Taylor <iant@google.com>
+
+ * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
+ note, just delete the insn.
+
2007-08-07 Andreas Schwab <schwab@suse.de>
PR bootstrap/32973
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;