re PR rtl-optimization/17266 (Libgfortran doesn't build)
authorEric Botcazou <ebotcazou@libertysurf.fr>
Tue, 21 Sep 2004 05:57:55 +0000 (07:57 +0200)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 21 Sep 2004 05:57:55 +0000 (05:57 +0000)
PR rtl-optimization/17266
* regmove.c (optimize_reg_copy_3): Make a new SUBREG for each insn.

From-SVN: r87793

gcc/ChangeLog
gcc/regmove.c

index a610a8ae07b8593e8889565db0aa6b3c1ec00a12..4e4d19ad394754126f644d062b5fcf2d81aa2f5f 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 587b5767e3cb4f5807581285154da5cf6fded816..c08a72058b336c6a24f189e410fc0dfc5431e630 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);