Commit 34d21fe3 by Richard Kenner Committed by Richard Kenner

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
parent dd4ff203
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 ();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment