summaryrefslogtreecommitdiff
path: root/gcc/explow.c
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2000-02-07 17:39:40 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2000-02-07 17:39:40 +0000
commitd0285dd8918af5a76cce9552a79e6729d264f643 (patch)
treefbcc1dc384eab7f572ca46df0b98ef599a28ec0b /gcc/explow.c
parent680cf83fbce73bf0ededf5398977759a73ebb63a (diff)
downloadgcc-d0285dd8918af5a76cce9552a79e6729d264f643.tar.gz
* calls.c (compute_argument_block_size): New argument
preferred_stack_boundary. (expand_call): update cfun->preferred_stack_boundary, update call of compute_argument_block_size (emit_library_call): Increate cfun->preferred_stack_boundary to PREFERRED_STACK_BOUNDARY (emit_library_call_value): Likewise. * explow.c (allocate_dynamic_stack_spave): Likewise. * function.c (prepare_function_start): Set cfun->preferred_stack_boundary * function.h (struct function): Add preferred_stack_boundary field. * integrate.c (expand_inline_function): Update cfun->preferred_stack_boundary and cfun->stack_alignment_needed. (copy_rtx_and_substitute): Align frame to stack_alignment_needed only. * i386.c (compute_frame_size): Use cfun->preferred_stack_boundary. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31831 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/explow.c')
-rw-r--r--gcc/explow.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/explow.c b/gcc/explow.c
index 1f76dcf081d..5883adaee81 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -1178,6 +1178,13 @@ allocate_dynamic_stack_space (size, target, known_align)
if (GET_MODE (size) != VOIDmode && GET_MODE (size) != Pmode)
size = convert_to_mode (Pmode, size, 1);
+ /* We can't attempt to minimize alignment necessary, because we don't
+ know the final value of preferred_stack_boundary yet while executing
+ this code. */
+#ifdef PREFERRED_STACK_BOUNDARY
+ cfun->preferred_stack_boundary = PREFERRED_STACK_BOUNDARY;
+#endif
+
/* We will need to ensure that the address we return is aligned to
BIGGEST_ALIGNMENT. If STACK_DYNAMIC_OFFSET is defined, we don't
always know its final value at this point in the compilation (it