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:
Jan Hubicka 2000-02-28 12:55:43 +01:00 committed by Jan Hubicka
parent 035a6890e9
commit 4e217aed3d
2 changed files with 21 additions and 2 deletions

View File

@ -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

View File

@ -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