You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.8 KiB
51 lines
1.8 KiB
commit c22c3dee4bbf4a99b234307c63e4845052a15890 |
|
Author: law <law@138bc75d-0d04-0410-961f-82ee72b054a4> |
|
Date: Thu Sep 21 22:03:59 2017 +0000 |
|
|
|
* config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): |
|
Fix dump output if the only stack space is for pushed registers. |
|
|
|
* lib/target-supports.exp |
|
(check_effective_target_frame_pointer_for_non_leaf): Add |
|
case for x86 Solaris. |
|
|
|
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@253082 138bc75d-0d04-0410-961f-82ee72b054a4 |
|
|
|
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c |
|
index a9072f58f50..d8a225195ae 100644 |
|
--- a/gcc/config/i386/i386.c |
|
+++ b/gcc/config/i386/i386.c |
|
@@ -9856,7 +9856,16 @@ ix86_adjust_stack_and_probe_stack_clash (const HOST_WIDE_INT size) |
|
no probes are needed. */ |
|
if (!size) |
|
{ |
|
- dump_stack_clash_frame_info (NO_PROBE_NO_FRAME, false); |
|
+ struct ix86_frame frame; |
|
+ ix86_compute_frame_layout (&frame); |
|
+ |
|
+ /* However, the allocation of space via pushes for register |
|
+ saves could be viewed as allocating space, but without the |
|
+ need to probe. */ |
|
+ if (frame.nregs || frame.nsseregs || frame_pointer_needed) |
|
+ dump_stack_clash_frame_info (NO_PROBE_SMALL_FRAME, true); |
|
+ else |
|
+ dump_stack_clash_frame_info (NO_PROBE_NO_FRAME, false); |
|
return; |
|
} |
|
|
|
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp |
|
index f24c5c6e0ac..7c126e4122b 100644 |
|
--- a/gcc/testsuite/lib/target-supports.exp |
|
+++ b/gcc/testsuite/lib/target-supports.exp |
|
@@ -5439,6 +5439,12 @@ proc check_effective_target_frame_pointer_for_non_leaf { } { |
|
if { [istarget aarch*-*-*] } { |
|
return 1 |
|
} |
|
+ |
|
+ # Solaris/x86 defaults to -fno-omit-frame-pointer. |
|
+ if { [istarget i?86-*-solaris*] || [istarget x86_64-*-solaris*] } { |
|
+ return 1 |
|
+ } |
|
+ |
|
return 0 |
|
}
|
|
|