This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
If you're wondering what happened to the fixup_var_refs changes
- To: gcc at gcc dot gnu dot org
- Subject: If you're wondering what happened to the fixup_var_refs changes
- From: "Zack Weinberg" <zackw at stanford dot edu>
- Date: Mon, 12 Feb 2001 19:09:49 -0800
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