OSDN Git Service

PR rtl-optimization/17266
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 21 Sep 2004 05:57:55 +0000 (05:57 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 21 Sep 2004 05:57:55 +0000 (05:57 +0000)
* regmove.c (optimize_reg_copy_3): Make a new SUBREG for each insn.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87793 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/regmove.c

index a610a8a..4e4d19a 100644 (file)
@@ -1,3 +1,8 @@
+2004-09-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+       PR rtl-optimization/17266
+       * regmove.c (optimize_reg_copy_3): Make a new SUBREG for each insn.
+
 2004-09-21  Uros Bizjak  <uros@kss-loka.si>
 
        PR rtl-optimization/14851
index 587b576..c08a720 100644 (file)
@@ -655,7 +655,7 @@ optimize_reg_copy_3 (rtx insn, rtx dest, rtx src)
   rtx src_reg = XEXP (src, 0);
   int src_no = REGNO (src_reg);
   int dst_no = REGNO (dest);
-  rtx p, set, subreg;
+  rtx p, set;
   enum machine_mode old_mode;
 
   if (src_no < FIRST_PSEUDO_REGISTER
@@ -703,14 +703,15 @@ optimize_reg_copy_3 (rtx insn, rtx dest, rtx src)
 
   /* Now walk forward making additional replacements.  We want to be able
      to undo all the changes if a later substitution fails.  */
-  subreg = gen_lowpart_SUBREG (old_mode, src_reg);
   while (p = NEXT_INSN (p), p != insn)
     {
       if (! INSN_P (p))
        continue;
 
       /* Make a tentative change.  */
-      validate_replace_rtx_group (src_reg, subreg, p);
+      validate_replace_rtx_group (src_reg,
+                                 gen_lowpart_SUBREG (old_mode, src_reg),
+                                 p);
     }
 
   validate_replace_rtx_group (src, src_reg, insn);