calls.c (expand_call): Attempt to combine stack adjustments with pending stack adjustments.
Thu Feb 24 17:17:29 MET 2000 Jan Hubicka <jh@suse.cz> * calls.c (expand_call): Attempt to combine stack adjustments with pending stack adjustments. From-SVN: r32230
This commit is contained in:
parent
035a6890e9
commit
4e217aed3d
|
@ -1,3 +1,8 @@
|
|||
Mon Feb 28 12:53:57 MET 2000 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* calls.c (expand_call): Attempt to combine stack adjustments with
|
||||
pending stack adjustments.
|
||||
|
||||
Mon Feb 28 11:34:43 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||
|
||||
* loop.c (reg_in_basic_block_p): Don't abort when falling through
|
||||
|
|
18
gcc/calls.c
18
gcc/calls.c
|
@ -2276,8 +2276,22 @@ expand_call (exp, target, ignore)
|
|||
#ifdef PREFERRED_STACK_BOUNDARY
|
||||
/* If we push args individually in reverse order, perform stack alignment
|
||||
before the first push (the last arg). */
|
||||
if (argblock == 0)
|
||||
anti_adjust_stack (GEN_INT (args_size.constant - unadjusted_args_size));
|
||||
if (args_size.constant != unadjusted_args_size)
|
||||
{
|
||||
/* When the stack adjustment is pending,
|
||||
we get better code by combining the adjustments. */
|
||||
if (pending_stack_adjust && !is_const)
|
||||
{
|
||||
args_size.constant = (unadjusted_args_size
|
||||
+ ((pending_stack_adjust + args_size.constant
|
||||
- unadjusted_args_size)
|
||||
% (preferred_stack_boundary / BITS_PER_UNIT)));
|
||||
pending_stack_adjust -= args_size.constant - unadjusted_args_size;
|
||||
do_pending_stack_adjust ();
|
||||
}
|
||||
else if (argblock == 0)
|
||||
anti_adjust_stack (GEN_INT (args_size.constant - unadjusted_args_size));
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue