]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
pa.c (emit_move_sequence): Do not replace a pseudo with its equivalent memory locatio...
authorJeffrey A Law <law@cygnus.com>
Tue, 15 Sep 1998 22:01:08 +0000 (22:01 +0000)
committerJeff Law <law@gcc.gnu.org>
Tue, 15 Sep 1998 22:01:08 +0000 (16:01 -0600)

        * pa.c (emit_move_sequence): Do not replace a pseudo with its
        equivalent memory location unless we have been provided a scratch
        register.  Similarly do not call find_replacement unless a
        scratch register has been provided.

From-SVN: r22438

gcc/ChangeLog
gcc/config/pa/pa.c

index 6d40dc21436880143aff3b4a932dbd903873c8ae..d791d774dd8060307349080b3ceb5b7013fc06fa 100644 (file)
@@ -1,3 +1,10 @@
+Tue Sep 15 22:59:52 1998  Jeffrey A Law  (law@cygnus.com)
+
+       * pa.c (emit_move_sequence): Do not replace a pseudo with its
+       equivalent memory location unless we have been provided a scratch
+       register.  Similarly do not call find_replacement unless a
+       scratch register has been provided.
+
 Tue Sep 15 19:23:01 1998  Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
 
         * i386.h (PREFERRED_RELOAD_CLASS): For standard 387 constants,
index a3eab2aebf5e2dbcc56e86ec4004d2a88f48ebcc..41642041e32f8a7b86d3f3f45b9af252821757b6 100644 (file)
@@ -1086,10 +1086,12 @@ emit_move_sequence (operands, mode, scratch_reg)
   register rtx operand1 = operands[1];
   register rtx tem;
 
-  if (reload_in_progress && GET_CODE (operand0) == REG
+  if (scratch_reg
+      && reload_in_progress && GET_CODE (operand0) == REG
       && REGNO (operand0) >= FIRST_PSEUDO_REGISTER)
     operand0 = reg_equiv_mem[REGNO (operand0)];
-  else if (reload_in_progress && GET_CODE (operand0) == SUBREG
+  else if (scratch_reg
+          && reload_in_progress && GET_CODE (operand0) == SUBREG
           && GET_CODE (SUBREG_REG (operand0)) == REG
           && REGNO (SUBREG_REG (operand0)) >= FIRST_PSEUDO_REGISTER)
     {
@@ -1097,10 +1099,12 @@ emit_move_sequence (operands, mode, scratch_reg)
       operand0 = alter_subreg (operand0);
     }
 
-  if (reload_in_progress && GET_CODE (operand1) == REG
+  if (scratch_reg
+      && reload_in_progress && GET_CODE (operand1) == REG
       && REGNO (operand1) >= FIRST_PSEUDO_REGISTER)
     operand1 = reg_equiv_mem[REGNO (operand1)];
-  else if (reload_in_progress && GET_CODE (operand1) == SUBREG
+  else if (scratch_reg
+          && reload_in_progress && GET_CODE (operand1) == SUBREG
           && GET_CODE (SUBREG_REG (operand1)) == REG
           && REGNO (SUBREG_REG (operand1)) >= FIRST_PSEUDO_REGISTER)
     {
@@ -1108,11 +1112,11 @@ emit_move_sequence (operands, mode, scratch_reg)
       operand1 = alter_subreg (operand1);
     }
 
-  if (reload_in_progress && GET_CODE (operand0) == MEM
+  if (scratch_reg && reload_in_progress && GET_CODE (operand0) == MEM
       && ((tem = find_replacement (&XEXP (operand0, 0)))
          != XEXP (operand0, 0)))
     operand0 = gen_rtx_MEM (GET_MODE (operand0), tem);
-  if (reload_in_progress && GET_CODE (operand1) == MEM
+  if (scratch_reg && reload_in_progress && GET_CODE (operand1) == MEM
       && ((tem = find_replacement (&XEXP (operand1, 0)))
          != XEXP (operand1, 0)))
     operand1 = gen_rtx_MEM (GET_MODE (operand1), tem);