aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@gcc.gnu.org>2011-05-03 07:20:01 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2011-05-03 07:20:01 +0000
commitb15eacc7da352ad393b29bd35b71019f1da2af7d (patch)
tree5eb7508945cfd6e043e9e8b59de4cb212e4d8841
parent5a17346ae5b88f06d5e21ecb3bd490cd76e797a1 (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/config/i386/i386.c4
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);