PREFERRED_STACK_BOUNDARY/function calling code fix

Jan Hubicka hubicka@atrey.karlin.mff.cuni.cz
Wed Mar 1 03:43:00 GMT 2000


> Hi
> 
> Here's a test case which aborts on x86 with this patch installed
> 
> Compile with -O1 or above
> 
> Graham

This patch ought to fix our problem.
The do_pending_stack_adjustments wasn't doing right job (or job I expected)
with defer_pop set.
OK to install?

Wed Mar  1 12:39:28 MET 2000  Jan Hubicka  <jh@suse.cz>
	* calls.c (expand_call)  Do not attempt to combine stack adjustments
	with inhibit_defer_pop set.

Index: egcs/gcc/calls.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/calls.c,v
retrieving revision 1.86
diff -c -3 -p -r1.86 calls.c
*** calls.c	2000/03/01 00:01:31	1.86
--- calls.c	2000/03/01 11:38:43
*************** expand_call (exp, target, ignore)
*** 2280,2286 ****
      {
        /* 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
--- 2280,2287 ----
      {
        /* When the stack adjustment is pending,
  	 we get better code by combining the adjustments.  */
!       if (pending_stack_adjust && !is_const
! 	  && !inhibit_defer_pop)
  	{
  	  args_size.constant = (unadjusted_args_size
  			        + ((pending_stack_adjust + args_size.constant


More information about the Gcc-patches mailing list