* lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
authorIan Lance Taylor <iant@google.com>
Fri, 2 Feb 2007 07:20:35 +0000 (07:20 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Fri, 2 Feb 2007 07:20:35 +0000 (07:20 +0000)
From-SVN: r121493

gcc/ChangeLog
gcc/lower-subreg.c

index 25d957a478a6d126ad1a9d130e6b4976d0ec92eb..46bfb56d7eacae5355cb0f4eccb6e9b417500b0f 100644 (file)
@@ -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.
index ce9cfc54ab54f5a745e7b53f4d8aaf0f11e50645..104a1d98a483d9dbd018d41807d171487d05894f 100644 (file)
@@ -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);
     }