summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2007-02-02 07:20:35 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2007-02-02 07:20:35 +0000
commit9a5a8e58d2acefdb149ca7c3c231056b545bf2c8 (patch)
treec5ba4d2994df25c58beaeb661841d16fc131f8da /gcc
parent114e4d106d80f2b5cd8fa398b78bcef9aae74150 (diff)
downloadgcc-9a5a8e58d2acefdb149ca7c3c231056b545bf2c8.tar.gz
* lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
From-SVN: r121493
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/lower-subreg.c7
2 files changed, 8 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 25d957a478a..46bfb56d7ea 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2007-02-01 Ian Lance Taylor <iant@google.com>
+
+ * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
+
2007-02-01 Guy Martin <gmsoft@gentoo.org>
* pa.md (tp_load): Correct mfctl instruction syntax.
diff --git a/gcc/lower-subreg.c b/gcc/lower-subreg.c
index ce9cfc54ab5..104a1d98a48 100644
--- a/gcc/lower-subreg.c
+++ b/gcc/lower-subreg.c
@@ -807,19 +807,20 @@ resolve_clobber (rtx pat, rtx insn)
unsigned int words, i;
reg = XEXP (pat, 0);
- if (!resolve_reg_p (reg))
+ if (!resolve_reg_p (reg) && !resolve_subreg_p (reg))
return false;
orig_mode = GET_MODE (reg);
words = GET_MODE_SIZE (orig_mode);
words = (words + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
- XEXP (pat, 0) = simplify_subreg_concatn (word_mode, reg, 0);
+ XEXP (pat, 0) = simplify_gen_subreg_concatn (word_mode, reg, orig_mode, 0);
for (i = words - 1; i > 0; --i)
{
rtx x;
- x = simplify_subreg_concatn (word_mode, reg, i * UNITS_PER_WORD);
+ x = simplify_gen_subreg_concatn (word_mode, reg, orig_mode,
+ i * UNITS_PER_WORD);
x = gen_rtx_CLOBBER (VOIDmode, x);
emit_insn_after (x, insn);
}