aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@libertysurf.fr>2004-09-21 07:57:55 +0200
committerEric Botcazou <ebotcazou@gcc.gnu.org>2004-09-21 05:57:55 +0000
commit15ee342b73adc73b1c307c9b827bdd5341561bf1 (patch)
treea2c3fb7f2b93b3b69ca5c7d0ec6c6e827461601e
parent9b60dfd716eda005cfc592129da66acdb210ee22 (diff)
downloadgcc-15ee342b73adc73b1c307c9b827bdd5341561bf1.zip
gcc-15ee342b73adc73b1c307c9b827bdd5341561bf1.tar.gz
gcc-15ee342b73adc73b1c307c9b827bdd5341561bf1.tar.bz2
re PR rtl-optimization/17266 (Libgfortran doesn't build)
PR rtl-optimization/17266 * regmove.c (optimize_reg_copy_3): Make a new SUBREG for each insn. From-SVN: r87793
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/regmove.c7
2 files changed, 9 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a610a8a..4e4d19a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/regmove.c b/gcc/regmove.c
index 587b576..c08a720 100644
--- a/gcc/regmove.c
+++ b/gcc/regmove.c
@@ -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);