(copy_rtx_and_substitute): Don't assume force_operand on an address returns a REG; it might be a SUBREG.

(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
This commit is contained in:
Richard Kenner 1992-10-20 06:50:14 -04:00
parent c45a13a68d
commit 59b2d7222d
1 changed files with 4 additions and 2 deletions

View 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;