]>
Commit | Line | Data |
---|---|---|
776048ef PS |
1 | --- trunk/gcc/config/i386/i386.c (wersja 136692) |
2 | +++ trunk/gcc/config/i386/i386.c (wersja 136693) | |
3 | @@ -6388,7 +6388,7 @@ | |
4 | || (TARGET_64BIT && frame->to_allocate >= (HOST_WIDE_INT) 0x80000000)) | |
5 | frame->save_regs_using_mov = false; | |
6 | ||
7 | - if (TARGET_RED_ZONE && current_function_sp_is_unchanging | |
8 | + if (!TARGET_64BIT_MS_ABI && TARGET_RED_ZONE && current_function_sp_is_unchanging | |
9 | && current_function_is_leaf | |
10 | && !ix86_current_function_calls_tls_descriptor) | |
11 | { | |
12 | @@ -6631,7 +6631,7 @@ | |
13 | avoid doing this if I am going to have to probe the stack since | |
14 | at least on x86_64 the stack probe can turn into a call that clobbers | |
15 | a red zone location */ | |
16 | - if (TARGET_RED_ZONE && frame.save_regs_using_mov | |
17 | + if (!TARGET_64BIT_MS_ABI && TARGET_RED_ZONE && frame.save_regs_using_mov | |
18 | && (! TARGET_STACK_PROBE || allocate < CHECK_STACK_LIMIT)) | |
19 | ix86_emit_save_regs_using_mov (frame_pointer_needed ? hard_frame_pointer_rtx | |
20 | : stack_pointer_rtx, | |
21 | @@ -6689,7 +6689,7 @@ | |
22 | } | |
23 | ||
24 | if (frame.save_regs_using_mov | |
25 | - && !(TARGET_RED_ZONE | |
26 | + && !(!TARGET_64BIT_MS_ABI && TARGET_RED_ZONE | |
27 | && (! TARGET_STACK_PROBE || allocate < CHECK_STACK_LIMIT))) | |
28 | { | |
29 | if (!frame_pointer_needed || !frame.to_allocate) | |
30 | @@ -21943,7 +21943,7 @@ | |
31 | rtx result; | |
32 | ||
33 | gcc_assert (reload_completed); | |
34 | - if (TARGET_RED_ZONE) | |
35 | + if (!TARGET_64BIT_MS_ABI && TARGET_RED_ZONE) | |
36 | { | |
37 | result = gen_rtx_MEM (mode, | |
38 | gen_rtx_PLUS (Pmode, | |
39 | @@ -21951,7 +21951,7 @@ | |
40 | GEN_INT (-RED_ZONE_SIZE))); | |
41 | emit_move_insn (result, operand); | |
42 | } | |
43 | - else if (!TARGET_RED_ZONE && TARGET_64BIT) | |
44 | + else if ((TARGET_64BIT_MS_ABI || !TARGET_RED_ZONE) && TARGET_64BIT) | |
45 | { | |
46 | switch (mode) | |
47 | { | |
48 | @@ -22018,7 +22018,7 @@ | |
49 | void | |
50 | ix86_free_from_memory (enum machine_mode mode) | |
51 | { | |
52 | - if (!TARGET_RED_ZONE) | |
53 | + if (!TARGET_RED_ZONE || TARGET_64BIT_MS_ABI) | |
54 | { | |
55 | int size; | |
56 |