If you're wondering what happened to the fixup_var_refs changes
Zack Weinberg
zackw@stanford.edu
Mon Feb 12 19:09:00 GMT 2001
The answer is, I'm behind the eight ball with my coursework, so don't
expect any patches until at least next weekend, and that's if I get
extremely lucky.
I note that this chunk of code in fixup_var_refs_insn is not doing
anything useful right now:
if (SMALL_REGISTER_CLASSES)
{
/* If the insn that copies the results of a CALL_INSN
into a pseudo now references VAR, we have to use an
intermediate pseudo since we want the life of the
return value register to be only a single insn.
If we don't use an intermediate pseudo, such things as
address computations to make the address of VAR valid
if it is not can be placed between the CALL_INSN and INSN.
To make sure this doesn't happen, we record the destination
of the CALL_INSN and see if the next insn uses both that
and VAR. */
if (call_dest != 0 && GET_CODE (insn) == INSN
&& reg_mentioned_p (var, PATTERN (insn))
&& reg_mentioned_p (call_dest, PATTERN (insn)))
{
rtx temp = gen_reg_rtx (GET_MODE (call_dest));
emit_insn_before (gen_move_insn (temp, call_dest), insn);
PATTERN (insn) = replace_rtx (PATTERN (insn),
call_dest, temp);
}
if (GET_CODE (insn) == CALL_INSN
&& GET_CODE (PATTERN (insn)) == SET)
call_dest = SET_DEST (PATTERN (insn));
else if (GET_CODE (insn) == CALL_INSN
&& GET_CODE (PATTERN (insn)) == PARALLEL
&& GET_CODE (XVECEXP (PATTERN (insn), 0, 0)) == SET)
call_dest = SET_DEST (XVECEXP (PATTERN (insn), 0, 0));
else
call_dest = 0;
}
call_dest is a local variable to fixup_var_refs_insn, so it will never
be nonzero when we hit the first if inside the block. So this
transformation will never happen.
This used to do something useful; I broke it with a previous patch
( http://gcc.gnu.org/ml/gcc-patches/2001-01/msg01456.html ). It could
be fixed pretty easily. However, given that it's been broken for a
month and no one has noticed, I suspect it's no longer necessary, and
I'm tempted to remove the entire thing. Comments?
zw
More information about the Gcc
mailing list