SOURCES: crossmingw64-gcc-no_red_zone.patch (NEW) - disable red zone for w6...
pluto
pluto at pld-linux.org
Thu Jul 3 15:09:09 CEST 2008
Author: pluto Date: Thu Jul 3 13:09:09 2008 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- disable red zone for w64 abi.
---- Files affected:
SOURCES:
crossmingw64-gcc-no_red_zone.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/crossmingw64-gcc-no_red_zone.patch
diff -u /dev/null SOURCES/crossmingw64-gcc-no_red_zone.patch:1.1
--- /dev/null Thu Jul 3 15:09:09 2008
+++ SOURCES/crossmingw64-gcc-no_red_zone.patch Thu Jul 3 15:09:03 2008
@@ -0,0 +1,56 @@
+--- trunk/gcc/config/i386/i386.c (wersja 136692)
++++ trunk/gcc/config/i386/i386.c (wersja 136693)
+@@ -6388,7 +6388,7 @@
+ || (TARGET_64BIT && frame->to_allocate >= (HOST_WIDE_INT) 0x80000000))
+ 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
+ && !ix86_current_function_calls_tls_descriptor)
+ {
+@@ -6631,7 +6631,7 @@
+ 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
++ if (!TARGET_64BIT_MS_ABI && 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
+ : stack_pointer_rtx,
+@@ -6689,7 +6689,7 @@
+ }
+
+ if (frame.save_regs_using_mov
+- && !(TARGET_RED_ZONE
++ && !(!TARGET_64BIT_MS_ABI && TARGET_RED_ZONE
+ && (! TARGET_STACK_PROBE || allocate < CHECK_STACK_LIMIT)))
+ {
+ if (!frame_pointer_needed || !frame.to_allocate)
+@@ -21943,7 +21943,7 @@
+ rtx result;
+
+ gcc_assert (reload_completed);
+- if (TARGET_RED_ZONE)
++ if (!TARGET_64BIT_MS_ABI && TARGET_RED_ZONE)
+ {
+ result = gen_rtx_MEM (mode,
+ gen_rtx_PLUS (Pmode,
+@@ -21951,7 +21951,7 @@
+ GEN_INT (-RED_ZONE_SIZE)));
+ 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)
+ {
+@@ -22018,7 +22018,7 @@
+ void
+ ix86_free_from_memory (enum machine_mode mode)
+ {
+- if (!TARGET_RED_ZONE)
++ if (!TARGET_RED_ZONE || TARGET_64BIT_MS_ABI)
+ {
+ int size;
+
================================================================
More information about the pld-cvs-commit
mailing list