(copy_rtx_and_substitute): Don't assume force_operand on an address returns a REG...
authorRichard Kenner <kenner@gcc.gnu.org>
Tue, 20 Oct 1992 10:50:14 +0000 (06:50 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 20 Oct 1992 10:50:14 +0000 (06:50 -0400)
(copy_rtx_and_substitute): Don't assume force_operand on an address
returns a REG; it might be a SUBREG.  Use force_reg.

From-SVN: r2527

gcc/integrate.c

index 965bc9f133416376dffc2dc7d90b08d7c45f6c8a..611bbad6d147c5a0c93503b3ce90f26dbac3e8c8 100644 (file)
@@ -1886,7 +1886,8 @@ copy_rtx_and_substitute (orig, map)
              rounded = CEIL_ROUND (size, BIGGEST_ALIGNMENT / BITS_PER_UNIT);
              loc = plus_constant (loc, rounded);
 #endif
-             map->reg_map[regno] = temp = force_operand (loc, NULL_RTX);
+             map->reg_map[regno] = temp
+               = force_reg (Pmode, force_operand (loc, NULL_RTX));
              map->const_equiv_map[REGNO (temp)] = loc;
              map->const_age_map[REGNO (temp)] = CONST_AGE_PARM;
 
@@ -1905,7 +1906,8 @@ copy_rtx_and_substitute (orig, map)
              start_sequence ();
              loc = assign_stack_temp (BLKmode, size, 1);
              loc = XEXP (loc, 0);
-             map->reg_map[regno] = temp = force_operand (loc, NULL_RTX);
+             map->reg_map[regno] = temp
+               = force_reg (Pmode, force_operand (loc, NULL_RTX));
              map->const_equiv_map[REGNO (temp)] = loc;
              map->const_age_map[REGNO (temp)] = CONST_AGE_PARM;