summaryrefslogtreecommitdiff
path: root/gcc/config/i386/i386.md
diff options
context:
space:
mode:
authorYvan Roux <yvan.roux@linaro.org>2015-12-15 10:44:46 +0100
committerYvan Roux <yvan.roux@linaro.org>2015-12-15 14:41:45 +0100
commit966a7fddb78c4fad3c2efb46c969308686557ec0 (patch)
treeed597a56f1ed08195ec07841c5608cf4d2945a47 /gcc/config/i386/i386.md
parent7f7da9776a2100eb6e64c142732c89ecc719d45d (diff)
downloadgcc-966a7fddb78c4fad3c2efb46c969308686557ec0.tar.gz
Merge branches/gcc-5-branch rev 231642.
Change-Id: I58832e31b4e58588e1d0800c3fc09a01f91b6320
Diffstat (limited to 'gcc/config/i386/i386.md')
-rw-r--r--gcc/config/i386/i386.md6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 345333b72a1..89e8161645e 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -12117,10 +12117,14 @@
;; We need to disable this for TARGET_SEH, as otherwise
;; shrink-wrapped prologue gets enabled too. This might exceed
;; the maximum size of prologue in unwind information.
+;; Also disallow shrink-wrapping if using stack slot to pass the
+;; static chain pointer - the first instruction has to be pushl %esi
+;; and it can't be moved around, as we use alternate entry points
+;; in that case.
(define_expand "simple_return"
[(simple_return)]
- "!TARGET_SEH"
+ "!TARGET_SEH && !ix86_static_chain_on_stack"
{
if (crtl->args.pops_args)
{