aboutsummaryrefslogtreecommitdiff
path: root/gcc/explow.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2000-02-07 18:39:40 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2000-02-07 17:39:40 +0000
commitc2f8b491493226d196fc80a9f0d4856612c52992 (patch)
treefbcc1dc384eab7f572ca46df0b98ef599a28ec0b /gcc/explow.c
parent08a75be26cf718b09bee952783e88d7789b47979 (diff)
downloadgcc-c2f8b491493226d196fc80a9f0d4856612c52992.zip
gcc-c2f8b491493226d196fc80a9f0d4856612c52992.tar.gz
gcc-c2f8b491493226d196fc80a9f0d4856612c52992.tar.bz2
calls.c (compute_argument_block_size): New argument preferred_stack_boundary.
* 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. From-SVN: r31831
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 1f76dcf..5883ada 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