cprop_hardreg: Ensure replacement reg has compatible mode [PR99221]
In addition to the existing check also ask the target whether a replacement register may be accessed in a different mode than it was set before. gcc/ChangeLog: * regcprop.c (find_oldest_value_reg): Ask target whether different mode is fine for replacement register.
This commit is contained in:
parent
e54da1b6b3
commit
a28cc94a27
|
@ -474,7 +474,8 @@ find_oldest_value_reg (enum reg_class cl, rtx reg, struct value_data *vd)
|
|||
(set (...) (reg:DI r9))
|
||||
Replacing r9 with r11 is invalid. */
|
||||
if (mode != vd->e[regno].mode
|
||||
&& REG_NREGS (reg) > hard_regno_nregs (regno, vd->e[regno].mode))
|
||||
&& (REG_NREGS (reg) > hard_regno_nregs (regno, vd->e[regno].mode)
|
||||
|| !REG_CAN_CHANGE_MODE_P (regno, mode, vd->e[regno].mode)))
|
||||
return NULL_RTX;
|
||||
|
||||
for (i = vd->e[regno].oldest_regno; i != regno; i = vd->e[i].next_regno)
|
||||
|
|
Loading…
Reference in New Issue