Commit 6893e828 by Arthur Norman Committed by Kai Tietz

(ix86_expand_prologue): Save red-zone while stack probing.

 PR 34013.

From-SVN: r131255
parent 1a7817e4
2008-01-02 Arthur Norman <acn1@cam.ac.uk>
PR 34013
* gcc/config/i386/i386.c: (ix86_expand_prologue): Save red-zone
while stack probing.
2008-01-01 Douglas Gregor <doug.gregor@gmail.com> 2008-01-01 Douglas Gregor <doug.gregor@gmail.com>
* c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
in C++0x mode. in C++0x mode.
2008-01-01 Volker Reichelt <v.reichelt@netcologne.de> 2008-01-01 Volker Reichelt <v.reichelt@netcologne.de>
...@@ -6318,8 +6318,12 @@ ix86_expand_prologue (void) ...@@ -6318,8 +6318,12 @@ ix86_expand_prologue (void)
allocate += frame.nregs * UNITS_PER_WORD; allocate += frame.nregs * UNITS_PER_WORD;
/* When using red zone we may start register saving before allocating /* When using red zone we may start register saving before allocating
the stack frame saving one cycle of the prologue. */ the stack frame saving one cycle of the prologue. However I will
if (TARGET_RED_ZONE && frame.save_regs_using_mov) avoid doing this if I am going to have to probe the stack since
at least on x86_64 the stack probe can turn into a call that clobbers
a red zone location */
if (TARGET_RED_ZONE && frame.save_regs_using_mov
&& (! TARGET_STACK_PROBE || allocate < CHECK_STACK_LIMIT))
ix86_emit_save_regs_using_mov (frame_pointer_needed ? hard_frame_pointer_rtx ix86_emit_save_regs_using_mov (frame_pointer_needed ? hard_frame_pointer_rtx
: stack_pointer_rtx, : stack_pointer_rtx,
-frame.nregs * UNITS_PER_WORD); -frame.nregs * UNITS_PER_WORD);
...@@ -6375,7 +6379,9 @@ ix86_expand_prologue (void) ...@@ -6375,7 +6379,9 @@ ix86_expand_prologue (void)
} }
} }
if (frame.save_regs_using_mov && !TARGET_RED_ZONE) if (frame.save_regs_using_mov
&& !(TARGET_RED_ZONE
&& (! TARGET_STACK_PROBE || allocate < CHECK_STACK_LIMIT)))
{ {
if (!frame_pointer_needed || !frame.to_allocate) if (!frame_pointer_needed || !frame.to_allocate)
ix86_emit_save_regs_using_mov (stack_pointer_rtx, frame.to_allocate); ix86_emit_save_regs_using_mov (stack_pointer_rtx, frame.to_allocate);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment