aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-10-31 18:43:05 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1996-10-31 18:43:05 -0500
commit27a2c2b5a1255f4df4b5316bdb2d642f5f2e256b (patch)
treee52d7b1431ba94bba5b435a87869a921b6d23677 /gcc
parent9593ce03b9cf0ab59659e768a68e3210ee568127 (diff)
downloadgcc-27a2c2b5a1255f4df4b5316bdb2d642f5f2e256b.zip
gcc-27a2c2b5a1255f4df4b5316bdb2d642f5f2e256b.tar.gz
gcc-27a2c2b5a1255f4df4b5316bdb2d642f5f2e256b.tar.bz2
(emit_move_sequence): Refine previous change.
From-SVN: r13087
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/pa/pa.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index 74d7b88..d8bc1e1 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -1066,7 +1066,10 @@ emit_move_sequence (operands, mode, scratch_reg)
else if (reload_in_progress && GET_CODE (operand0) == SUBREG
&& GET_CODE (SUBREG_REG (operand0)) == REG
&& REGNO (SUBREG_REG (operand0)) >= FIRST_PSEUDO_REGISTER)
- SUBREG_REG (operand0) = reg_equiv_mem[REGNO (SUBREG_REG (operand0))];
+ {
+ SUBREG_REG (operand0) = reg_equiv_mem[REGNO (SUBREG_REG (operand0))];
+ operand0 = alter_subreg (operand0);
+ }
if (reload_in_progress && GET_CODE (operand1) == REG
&& REGNO (operand1) >= FIRST_PSEUDO_REGISTER)
@@ -1074,7 +1077,10 @@ emit_move_sequence (operands, mode, scratch_reg)
else if (reload_in_progress && GET_CODE (operand1) == SUBREG
&& GET_CODE (SUBREG_REG (operand1)) == REG
&& REGNO (SUBREG_REG (operand1)) >= FIRST_PSEUDO_REGISTER)
- SUBREG_REG (operand1) = reg_equiv_mem[REGNO (SUBREG_REG (operand1))];
+ {
+ SUBREG_REG (operand1) = reg_equiv_mem[REGNO (SUBREG_REG (operand1))];
+ operand1 = alter_subreg (operand1);
+ }
/* Handle secondary reloads for loads/stores of FP registers from
REG+D addresses where D does not fit in 5 bits, including