tree arg = convert (TREE_TYPE (formal), TREE_VALUE (actual));
/* Mode of the variable used within the function. */
enum machine_mode mode = TYPE_MODE (TREE_TYPE (formal));
+ int invisiref = 0;
/* Make sure this formal has some correspondence in the users code
* before emitting any line notes for it. */
store_expr (arg, stack_slot, 0);
arg_vals[i] = XEXP (stack_slot, 0);
+ invisiref = 1;
}
else if (GET_CODE (loc) != MEM)
{
be two different pseudos, and `safe_from_p' will make all
sorts of smart assumptions about their not conflicting.
But if ARG_VALS[I] overlaps TARGET, these assumptions are
- wrong, so put ARG_VALS[I] into a fresh register. */
+ wrong, so put ARG_VALS[I] into a fresh register.
+ Don't worry about invisible references, since their stack
+ temps will never overlap the target. */
|| (target != 0
+ && ! invisiref
&& (GET_CODE (arg_vals[i]) == REG
|| GET_CODE (arg_vals[i]) == SUBREG
|| GET_CODE (arg_vals[i]) == MEM)