diff options
author | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2011-05-03 07:20:01 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2011-05-03 07:20:01 +0000 |
commit | b15eacc7da352ad393b29bd35b71019f1da2af7d (patch) | |
tree | 5eb7508945cfd6e043e9e8b59de4cb212e4d8841 | |
parent | 5a17346ae5b88f06d5e21ecb3bd490cd76e797a1 (diff) | |
download | gcc-b15eacc7da352ad393b29bd35b71019f1da2af7d.zip gcc-b15eacc7da352ad393b29bd35b71019f1da2af7d.tar.gz gcc-b15eacc7da352ad393b29bd35b71019f1da2af7d.tar.bz2 |
re PR target/48723 (ICE on function returning structure with -fstack-check on corei7-avx)
PR target/48723
* config/i386/i386.c (ix86_expand_prologue): Do not probe the stack
for -fstack-check if the size to allocate is negative.
From-SVN: r173288
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 4 |
2 files changed, 9 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 026a90b..043f73a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-05-03 Eric Botcazou <ebotcazou@adacore.com> + + PR target/48723 + * config/i386/i386.c (ix86_expand_prologue): Do not probe the stack + for -fstack-check if the size to allocate is negative. + 2011-05-02 Lawrence Crowl <crowl@google.com> * timevar.h (timevar_cond_start): Remove unused POP_TIMEVAR_AND_RETURN. @@ -941,7 +947,7 @@ * system.h (ENUM_BITFIELD): Remove. 2011-04-25 Maxim Kuvyrkov <maxim@codesourcery.com> - Eric Botcazou <ebotcazou@adacore.com> + Eric Botcazou <ebotcazou@adacore.com> * combine.c (combine_simplify_rtx): Avoid mis-simplifying conditionals for STORE_FLAG_VALUE==-1 case. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 558eff1..c164c707 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -10619,8 +10619,8 @@ ix86_expand_prologue (void) } /* The stack has already been decremented by the instruction calling us - so we need to probe unconditionally to preserve the protection area. */ - if (flag_stack_check == STATIC_BUILTIN_STACK_CHECK) + so probe if the size is non-negative to preserve the protection area. */ + if (allocate >= 0 && flag_stack_check == STATIC_BUILTIN_STACK_CHECK) { /* We expect the registers to be saved when probes are used. */ gcc_assert (int_registers_saved); |