There is is no point to round up the SSE register save area to 16 bytes if
the incoming stack boundary is less than 16 bytes.
OK for trunk?
H.J.
---
* config/i386/i386.c (ix86_compute_frame_layout): Round up the
SSE register save area to 16 bytes only if the incoming stack
boundary is no less than 16 bytes.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index a24bd26..7f0479c 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -11382,10 +11382,11 @@ ix86_compute_frame_layout (struct ix86_frame *frame)
/* Align and set SSE register save area. */
if (frame->nsseregs)
{
- /* The only ABI that has saved SSE registers (Win64) also has a
- 16-byte aligned default stack, and thus we don't need to be
- within the re-aligned local stack frame to save them. */
- offset = ROUND_UP (offset, 16);
+ /* There is is no point to round up the SSE register save area
+ to 16 bytes if the incoming stack boundary is less than 16
+ bytes. */
+ if (ix86_incoming_stack_boundary >= 128)
+ offset = ROUND_UP (offset, 16);
offset += frame->nsseregs * 16;
}
frame->sse_reg_save_offset = offset;