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:
parent
a4d5044f41
commit
ebcd0b57fa
@ -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
|
||||
|
18
gcc/calls.c
18
gcc/calls.c
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user