loop.c (load_mems): Don't change the interface of called functions.
* loop.c (load_mems): Don't change the interface of called functions. * calls.c (expand_call): Take current_function_pretend_args_size into account when setting argblock for sibcalls. From-SVN: r52745
This commit is contained in:
parent
0df9cfc799
commit
fcae219ac4
@ -1,3 +1,10 @@
|
|||||||
|
Wed Apr 24 23:45:37 2002 J"orn Rennecke <joern.rennecke@superh.com>
|
||||||
|
|
||||||
|
* loop.c (load_mems): Don't change the interface of called functions.
|
||||||
|
|
||||||
|
* calls.c (expand_call): Take current_function_pretend_args_size
|
||||||
|
into account when setting argblock for sibcalls.
|
||||||
|
|
||||||
2002-04-24 Matt Hiller <hiller@redhat.com>
|
2002-04-24 Matt Hiller <hiller@redhat.com>
|
||||||
|
|
||||||
* cpplex.c: Remove conditional #undef of MULTIBYTE_CHARS.
|
* cpplex.c: Remove conditional #undef of MULTIBYTE_CHARS.
|
||||||
|
@ -2709,6 +2709,12 @@ expand_call (exp, target, ignore)
|
|||||||
if (pass == 0)
|
if (pass == 0)
|
||||||
{
|
{
|
||||||
argblock = virtual_incoming_args_rtx;
|
argblock = virtual_incoming_args_rtx;
|
||||||
|
argblock
|
||||||
|
#ifdef STACK_GROWS_DOWNWARD
|
||||||
|
= plus_constant (argblock, current_function_pretend_args_size);
|
||||||
|
#else
|
||||||
|
= plus_constant (argblock, -current_function_pretend_args_size);
|
||||||
|
#endif
|
||||||
stored_args_map = sbitmap_alloc (args_size.constant);
|
stored_args_map = sbitmap_alloc (args_size.constant);
|
||||||
sbitmap_zero (stored_args_map);
|
sbitmap_zero (stored_args_map);
|
||||||
}
|
}
|
||||||
|
21
gcc/loop.c
21
gcc/loop.c
@ -9784,9 +9784,20 @@ load_mems (loop)
|
|||||||
&& rtx_equal_p (SET_DEST (set), mem))
|
&& rtx_equal_p (SET_DEST (set), mem))
|
||||||
SET_REGNO_REG_SET (&store_copies, REGNO (SET_SRC (set)));
|
SET_REGNO_REG_SET (&store_copies, REGNO (SET_SRC (set)));
|
||||||
|
|
||||||
/* Replace the memory reference with the shadow register. */
|
/* If this is a call which uses / clobbers this memory
|
||||||
replace_loop_mems (p, loop_info->mems[i].mem,
|
location, we must not change the interface here. */
|
||||||
loop_info->mems[i].reg);
|
if (GET_CODE (p) == CALL_INSN
|
||||||
|
&& reg_mentioned_p (loop_info->mems[i].mem,
|
||||||
|
CALL_INSN_FUNCTION_USAGE (p)))
|
||||||
|
{
|
||||||
|
cancel_changes (0);
|
||||||
|
loop_info->mems[i].optimize = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
/* Replace the memory reference with the shadow register. */
|
||||||
|
replace_loop_mems (p, loop_info->mems[i].mem,
|
||||||
|
loop_info->mems[i].reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GET_CODE (p) == CODE_LABEL
|
if (GET_CODE (p) == CODE_LABEL
|
||||||
@ -9794,7 +9805,9 @@ load_mems (loop)
|
|||||||
maybe_never = 1;
|
maybe_never = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! apply_change_group ())
|
if (! loop_info->mems[i].optimize)
|
||||||
|
; /* We found we couldn't do the replacement, so do nothing. */
|
||||||
|
else if (! apply_change_group ())
|
||||||
/* We couldn't replace all occurrences of the MEM. */
|
/* We couldn't replace all occurrences of the MEM. */
|
||||||
loop_info->mems[i].optimize = 0;
|
loop_info->mems[i].optimize = 0;
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user