mirror of
https://gcc.gnu.org/git/gcc.git
synced 2025-01-10 21:13:46 +08:00
function.c (purge_addressof_1): For ADDRESSOF...
* function.c (purge_addressof_1): For ADDRESSOF, see if SUB is a hard or virtual register and copy into pseudo if replacement fails. From-SVN: r65798
This commit is contained in:
parent
dd4ff203fa
commit
34d21fe305
@ -1,6 +1,9 @@
|
||||
2003-04-18 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
|
||||
* cfgcleanup.c (flow_find_cross_jump): Use INSN_P,not active_insn_p.
|
||||
* function.c (purge_addressof_1): For ADDRESSOF, see if SUB is a
|
||||
hard or virtual register and copy into pseudo if replacement fails.
|
||||
|
||||
* cfgcleanup.c (flow_find_cross_jump): Use INSN_P, not active_insn_p.
|
||||
|
||||
* expmed.c (mask_rtx): Avoid undefined shifts for BITSIZE of 0.
|
||||
|
||||
|
@ -3052,7 +3052,15 @@ purge_addressof_1 (loc, insn, force, store, may_postpone, ht)
|
||||
return true;
|
||||
|
||||
start_sequence ();
|
||||
sub = force_operand (sub, NULL_RTX);
|
||||
|
||||
/* If SUB is a or virtual register, try it as a pseudo-register.
|
||||
Otherwise, perhaps SUB is an expression, so generate code to compute
|
||||
it. */
|
||||
if (GET_CODE (sub) == REG && REGNO (sub) <= LAST_VIRTUAL_REGISTER)
|
||||
sub = copy_to_reg (sub);
|
||||
else
|
||||
sub = force_operand (sub, NULL_RTX);
|
||||
|
||||
if (! validate_change (insn, loc, sub, 0)
|
||||
&& ! validate_replace_rtx (x, sub, insn))
|
||||
abort ();
|
||||
|
Loading…
Reference in New Issue
Block a user