calls.c (expand_call): Do NO_DEFER_POP unconditionally once stack is propertly aligned...

* calls.c (expand_call): Do NO_DEFER_POP unconditionally once
	stack is propertly aligned; add sanity checking for aligned
	stack pointer.
	(expand_library_call_value_1): Add sanity checking for aligned
	stack pointer.

From-SVN: r33106
This commit is contained in:
Jan Hubicka 2000-04-12 13:56:19 +00:00 committed by Jan Hubicka
parent a4d5044f41
commit ebcd0b57fa
2 changed files with 23 additions and 3 deletions

View File

@ -1,3 +1,11 @@
Wed Apr 12 15:54:11 MET DST 2000 Jan Hubicka <jh@suse.cz>
* calls.c (expand_call): Do NO_DEFER_POP unconditionally once
stack is propertly aligned; add sanity checking for aligned
stack pointer.
(expand_library_call_value_1): Add sanity checking for aligned
stack pointer.
Wed Apr 12 07:51:54 2000 Catherine Moore <clm@cygnus.com>
* calls.c (emit_library_call_value_1): Change 3rd arg to

View File

@ -2671,10 +2671,10 @@ expand_call (exp, target, ignore)
else if (argblock == 0)
anti_adjust_stack (GEN_INT (args_size.constant
- unadjusted_args_size));
/* Now that the stack is properly aligned, pops can't safely
be deferred during the evaluation of the arguments. */
NO_DEFER_POP;
}
/* Now that the stack is properly aligned, pops can't safely
be deferred during the evaluation of the arguments. */
NO_DEFER_POP;
#endif
/* Don't try to defer pops if preallocating, not even from the first arg,
@ -2800,6 +2800,12 @@ expand_call (exp, target, ignore)
/* All arguments and registers used for the call must be set up by
now! */
#ifdef PREFERRED_STACK_BOUNDARY
/* Stack must to be properly aligned now. */
if (stack_pointer_delta & (preferred_stack_boundary / BITS_PER_UNIT - 1))
abort();
#endif
/* Generate the actual call instruction. */
emit_call_1 (funexp, fndecl, funtype, unadjusted_args_size,
args_size.constant, struct_value_size,
@ -3692,6 +3698,12 @@ emit_library_call_value_1 (retval, orgfun, value, no_queue, outmode, nargs, p)
cse'ing of library calls could delete a call and leave the pop. */
NO_DEFER_POP;
#ifdef PREFERRED_STACK_BOUNDARY
/* Stack must to be properly aligned now. */
if (stack_pointer_delta & (PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT - 1))
abort();
#endif
/* We pass the old value of inhibit_defer_pop + 1 to emit_call_1, which
will set inhibit_defer_pop to that value. */
/* The return type is needed to decide how many bytes the function pops.