diff options
author | Joseph Myers <joseph@codesourcery.com> | 2008-03-04 12:46:56 +0000 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2008-03-04 12:46:56 +0000 |
commit | 2c7c6f543937704c5ec5975e237f2ce917d79f94 (patch) | |
tree | ee7c895f824b72239993d2a510287b8dc4ed4640 | |
parent | 676e18068fd59ae79f0c74538fcae607e24809fa (diff) | |
download | gcc-2c7c6f543937704c5ec5975e237f2ce917d79f94.zip gcc-2c7c6f543937704c5ec5975e237f2ce917d79f94.tar.gz gcc-2c7c6f543937704c5ec5975e237f2ce917d79f94.tar.bz2 |
i386.c (override_options): Force -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
* config/i386/i386.c (override_options): Force
-maccumulate-outgoing-args on if TARGET_STACK_PROBE.
testsuite:
* gcc.target/i386/sse-10.c: Don't use
-mno-accumulate-outgoing-args on *-*-mingw* *-*-cygwin*.
From-SVN: r132860
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 12 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/sse-10.c | 1 |
4 files changed, 23 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 07adcb8..459f392 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-03-04 Joseph Myers <joseph@codesourcery.com> + + * config/i386/i386.c (override_options): Force + -maccumulate-outgoing-args on if TARGET_STACK_PROBE. + 2008-03-04 Jan Hubicka <jh@suse.cz> PR c++/35262 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 5a4456d..844bb75 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -2700,6 +2700,18 @@ override_options (void) target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS; } + /* If stack probes are required, the space used for large function + arguments on the stack must also be probed, so enable + -maccumulate-outgoing-args so this happens in the prologue. */ + if (TARGET_STACK_PROBE + && !(target_flags & MASK_ACCUMULATE_OUTGOING_ARGS)) + { + if (target_flags_explicit & MASK_ACCUMULATE_OUTGOING_ARGS) + warning (0, "stack probing requires -maccumulate-outgoing-args " + "for correctness"); + target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS; + } + /* For sane SSE instruction set generation we need fcomi instruction. It is safe to enable all CMOVE instructions. */ if (TARGET_SSE) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6e45f82..7aeb040 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-03-04 Joseph Myers <joseph@codesourcery.com> + + * gcc.target/i386/sse-10.c: Don't use + -mno-accumulate-outgoing-args on *-*-mingw* *-*-cygwin*. + 2008-03-04 Uros Bizjak <ubizjak@gmail.com> * gfortran.dg/reassoc_1.f90: Cleanup dump files. diff --git a/gcc/testsuite/gcc.target/i386/sse-10.c b/gcc/testsuite/gcc.target/i386/sse-10.c index 1c222df..b5bc8f6 100644 --- a/gcc/testsuite/gcc.target/i386/sse-10.c +++ b/gcc/testsuite/gcc.target/i386/sse-10.c @@ -1,6 +1,7 @@ /* PR 17930 */ /* { dg-do run } */ /* { dg-options "-O1 -msse2 -mfpmath=sse -mno-accumulate-outgoing-args -fno-omit-frame-pointer" } */ +/* { dg-options "-O1 -msse2 -mfpmath=sse -fno-omit-frame-pointer" { target *-*-mingw* *-*-cygwin* } } */ #include "sse2-check.h" |