diff options
author | Richard Henderson <rth@redhat.com> | 2010-10-31 18:14:46 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2010-10-31 18:14:46 -0700 |
commit | cc825d987a56fc3bc62aaad9147358a18c0cf932 (patch) | |
tree | 5114e62d7ccd9ac86dd1b17c2532d80ce971832b /gcc | |
parent | f81c97740380165364d4af23c706f010c74e2609 (diff) | |
download | gcc-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/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp | 12 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp | 11 | ||||
-rw-r--r-- | gcc/testsuite/lib/target-supports.exp | 11 |
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. |