Commit 394a378c by Kai Tietz Committed by Kai Tietz

i386.c (ix86_compute_frame_layout): Disable red zone for w64 abi.

2008-06-11  Kai Tietz  <kai.tietz@onevision.com>

	* config/i386/i386.c (ix86_compute_frame_layout): Disable red zone for
	w64 abi.
	(ix86_expand_prologue): Likewise.
	(ix86_force_to_memory): Likewise.
	(ix86_free_from_memory): Likewise.

From-SVN: r136693
parent 001c3719
2008-06-12 Kai Tietz <kai.tietz@onevision.com>
* config/i386/i386.c (ix86_compute_frame_layout): Disable red zone for
w64 abi.
(ix86_expand_prologue): Likewise.
(ix86_force_to_memory): Likewise.
(ix86_free_from_memory): Likewise.
2008-06-11 Edmar Wienskoski <edmar@freescale.com> 2008-06-11 Edmar Wienskoski <edmar@freescale.com>
PR target/36425 PR target/36425
......
...@@ -6388,7 +6388,7 @@ ix86_compute_frame_layout (struct ix86_frame *frame) ...@@ -6388,7 +6388,7 @@ ix86_compute_frame_layout (struct ix86_frame *frame)
|| (TARGET_64BIT && frame->to_allocate >= (HOST_WIDE_INT) 0x80000000)) || (TARGET_64BIT && frame->to_allocate >= (HOST_WIDE_INT) 0x80000000))
frame->save_regs_using_mov = false; frame->save_regs_using_mov = false;
if (TARGET_RED_ZONE && current_function_sp_is_unchanging if (!TARGET_64BIT_MS_ABI && TARGET_RED_ZONE && current_function_sp_is_unchanging
&& current_function_is_leaf && current_function_is_leaf
&& !ix86_current_function_calls_tls_descriptor) && !ix86_current_function_calls_tls_descriptor)
{ {
...@@ -6631,7 +6631,7 @@ ix86_expand_prologue (void) ...@@ -6631,7 +6631,7 @@ ix86_expand_prologue (void)
avoid doing this if I am going to have to probe the stack since 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 at least on x86_64 the stack probe can turn into a call that clobbers
a red zone location */ a red zone location */
if (TARGET_RED_ZONE && frame.save_regs_using_mov if (!TARGET_64BIT_MS_ABI && TARGET_RED_ZONE && frame.save_regs_using_mov
&& (! TARGET_STACK_PROBE || allocate < CHECK_STACK_LIMIT)) && (! 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,
...@@ -6689,7 +6689,7 @@ ix86_expand_prologue (void) ...@@ -6689,7 +6689,7 @@ ix86_expand_prologue (void)
} }
if (frame.save_regs_using_mov if (frame.save_regs_using_mov
&& !(TARGET_RED_ZONE && !(!TARGET_64BIT_MS_ABI && TARGET_RED_ZONE
&& (! TARGET_STACK_PROBE || allocate < CHECK_STACK_LIMIT))) && (! TARGET_STACK_PROBE || allocate < CHECK_STACK_LIMIT)))
{ {
if (!frame_pointer_needed || !frame.to_allocate) if (!frame_pointer_needed || !frame.to_allocate)
...@@ -21943,7 +21943,7 @@ ix86_force_to_memory (enum machine_mode mode, rtx operand) ...@@ -21943,7 +21943,7 @@ ix86_force_to_memory (enum machine_mode mode, rtx operand)
rtx result; rtx result;
gcc_assert (reload_completed); gcc_assert (reload_completed);
if (TARGET_RED_ZONE) if (!TARGET_64BIT_MS_ABI && TARGET_RED_ZONE)
{ {
result = gen_rtx_MEM (mode, result = gen_rtx_MEM (mode,
gen_rtx_PLUS (Pmode, gen_rtx_PLUS (Pmode,
...@@ -21951,7 +21951,7 @@ ix86_force_to_memory (enum machine_mode mode, rtx operand) ...@@ -21951,7 +21951,7 @@ ix86_force_to_memory (enum machine_mode mode, rtx operand)
GEN_INT (-RED_ZONE_SIZE))); GEN_INT (-RED_ZONE_SIZE)));
emit_move_insn (result, operand); emit_move_insn (result, operand);
} }
else if (!TARGET_RED_ZONE && TARGET_64BIT) else if ((TARGET_64BIT_MS_ABI || !TARGET_RED_ZONE) && TARGET_64BIT)
{ {
switch (mode) switch (mode)
{ {
...@@ -22018,7 +22018,7 @@ ix86_force_to_memory (enum machine_mode mode, rtx operand) ...@@ -22018,7 +22018,7 @@ ix86_force_to_memory (enum machine_mode mode, rtx operand)
void void
ix86_free_from_memory (enum machine_mode mode) ix86_free_from_memory (enum machine_mode mode)
{ {
if (!TARGET_RED_ZONE) if (!TARGET_RED_ZONE || TARGET_64BIT_MS_ABI)
{ {
int size; int size;
......
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