aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2010-10-31 18:14:46 -0700
committerRichard Henderson <rth@gcc.gnu.org>2010-10-31 18:14:46 -0700
commitcc825d987a56fc3bc62aaad9147358a18c0cf932 (patch)
tree5114e62d7ccd9ac86dd1b17c2532d80ce971832b /gcc
parentf81c97740380165364d4af23c706f010c74e2609 (diff)
downloadgcc-cc825d987a56fc3bc62aaad9147358a18c0cf932.zip
gcc-cc825d987a56fc3bc62aaad9147358a18c0cf932.tar.gz
gcc-cc825d987a56fc3bc62aaad9147358a18c0cf932.tar.bz2
Disable -mpreferred-stack-boundary options for Windows.
From-SVN: r166120
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog9
-rw-r--r--gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp12
-rw-r--r--gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp11
-rw-r--r--gcc/testsuite/lib/target-supports.exp11
4 files changed, 26 insertions, 17 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b46c15f..9001739 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2010-10-31 Richard Henderson <rth@redhat.com>
+
+ * lib/target-supports.exp
+ (check_effective_target_automatic_stack_alignment): True for
+ x86 but not windows.
+ * g++.dg/torture/stackalign/stackalign.exp: Use it to protect
+ use of the preferred-stack-boundary arguments.
+ * gcc.dg/torture/stackalign/stackalign.exp: Likewise.
+
2010-10-31 H.J. Lu <hongjiu.lu@intel.com>
PR target/46142
diff --git a/gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp b/gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp
index bfa413e..e68337d 100644
--- a/gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp
+++ b/gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp
@@ -18,19 +18,15 @@
# This harness is for tests that should be run at all optimisation levels.
load_lib g++-dg.exp
-
-# Only run on targets which support automatic stack alignment.
-if { ![check_effective_target_automatic_stack_alignment] } then {
- return
-}
-
+dg-init
set additional_flags ""
-if { [istarget i?86*-*-*] || [istarget x86_64-*-*] } then {
+
+# If automatic stack alignment is supported, force it on.
+if { [check_effective_target_automatic_stack_alignment] } then {
lappend additional_flags "-mstackrealign"
lappend additional_flags "-mpreferred-stack-boundary=5"
}
-dg-init
gcc-dg-runtest [lsort [glob $srcdir/$subdir/*.C]] $additional_flags
if { [check_effective_target_fpic] } then {
lappend additional_flags "-fpic"
diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp b/gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp
index ef45dbe..83c6239 100644
--- a/gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp
@@ -19,15 +19,12 @@
load_lib gcc-dg.exp
-# Only run on targets which support automatic stack alignment.
-if { ![check_effective_target_automatic_stack_alignment] } then {
- return
-}
-
set additional_flags ""
-if { [istarget i?86*-*-*] || [istarget x86_64-*-*] } then {
+if { [check_effective_target_automatic_stack_alignment] } then {
lappend additional_flags "-mstackrealign"
lappend additional_flags "-mpreferred-stack-boundary=5"
+}
+if { [istarget i?86*-*-*] || [istarget x86_64-*-*] } then {
lappend additional_flags "-mno-mmx"
}
@@ -40,7 +37,7 @@ if { [check_effective_target_fpic] } then {
gcc-dg-runtest [lsort [glob $srcdir/$subdir/*.c]] $pic_additional_flags
}
-if { [istarget i?86*-*-*] || [istarget x86_64-*-*] } then {
+if { [check_effective_target_automatic_stack_alignment] } then {
lappend additional_flags "-mforce-drap"
gcc-dg-runtest [lsort [glob $srcdir/$subdir/*.c]] $additional_flags
if { [check_effective_target_fpic] } then {
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 0ae003a..87b234d 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -3551,8 +3551,15 @@ proc check_effective_target_4byte_wchar_t { } {
# Return 1 if the target supports automatic stack alignment.
proc check_effective_target_automatic_stack_alignment { } {
- # Not "stack alignment" per se, but proper stack alignment of decls.
- return 1;
+ # Ordinarily x86 supports automatic stack alignment ...
+ if { [istarget i?86*-*-*] || [istarget x86_64-*-*] } then {
+ if { [istarget *-*-mingw*] || [istarget *-*-cygwin*] } {
+ # ... except Win64 SEH doesn't. Succeed for Win32 though.
+ return [check_effective_target_ilp32];
+ }
+ return 1;
+ }
+ return 0;
}
# Return 1 if avx instructions can be compiled.