aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2007-08-04 01:07:25 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2007-08-03 23:07:25 +0000
commit48dd736cd4f9fe8eddc5ef1ab7711021236eacc4 (patch)
tree75491d7f17ee20bc3ce1718eb33021b070f65271 /gcc
parentf353733a26494c2b5684382f06d152381529077b (diff)
downloadgcc-48dd736cd4f9fe8eddc5ef1ab7711021236eacc4.zip
gcc-48dd736cd4f9fe8eddc5ef1ab7711021236eacc4.tar.gz
gcc-48dd736cd4f9fe8eddc5ef1ab7711021236eacc4.tar.bz2
i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred stack boundary.
* i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred stack boundary. From-SVN: r127189
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.c9
2 files changed, 13 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 05e5dcc..5878f50 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2007-08-03 Jan Hubicka <jh@suse.cz>
+
+ * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
+ stack boundary.
+
2007-08-03 David Edelsohn <edelsohn@gnu.org>
* config/rs6000/rs6000.c (struct processor_cost): Change
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 28471ba..de03780 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -4694,7 +4694,14 @@ setup_incoming_varargs_64 (CUMULATIVE_ARGS *cum)
/* Indicate to allocate space on the stack for varargs save area. */
ix86_save_varrargs_registers = 1;
- cfun->stack_alignment_needed = 128;
+ /* We need 16-byte stack alignment to save SSE registers. If user
+ asked for lower preferred_stack_boundary, lets just hope that he knows
+ what he is doing and won't varargs SSE values.
+
+ We also may end up assuming that only 64bit values are stored in SSE
+ register let some floating point program work. */
+ if (ix86_preferred_stack_boundary >= 128)
+ cfun->stack_alignment_needed = 128;
save_area = frame_pointer_rtx;
set = get_varargs_alias_set ();