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>
|
||||
|
||||
* cpplex.c: Remove conditional #undef of MULTIBYTE_CHARS.
|
||||
|
@ -2709,6 +2709,12 @@ expand_call (exp, target, ignore)
|
||||
if (pass == 0)
|
||||
{
|
||||
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);
|
||||
sbitmap_zero (stored_args_map);
|
||||
}
|
||||
|
15
gcc/loop.c
15
gcc/loop.c
@ -9784,6 +9784,17 @@ load_mems (loop)
|
||||
&& rtx_equal_p (SET_DEST (set), mem))
|
||||
SET_REGNO_REG_SET (&store_copies, REGNO (SET_SRC (set)));
|
||||
|
||||
/* If this is a call which uses / clobbers this memory
|
||||
location, we must not change the interface here. */
|
||||
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);
|
||||
@ -9794,7 +9805,9 @@ load_mems (loop)
|
||||
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. */
|
||||
loop_info->mems[i].optimize = 0;
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user