aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2016-09-01 07:55:00 +0000
committerEric Botcazou <ebotcazou@adacore.com>2016-09-01 07:55:00 +0000
commit0f6e7985c361d611ee3715820a67b84d215adcf5 (patch)
treecc78efb36e5b46add19266de7658ff43b34e3d74
parentfb6ff44893c7ca71df9db9580e6e820dfa227aac (diff)
* config/i386/i386.c (ix86_option_override_internal): Also disable the
STV pass if -mstackrealign is enabled. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@239916 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1cf6ef600dd..9f90359170e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2016-09-01 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/i386/i386.c (ix86_option_override_internal): Also disable the
+ STV pass if -mstackrealign is enabled.
+
2016-08-31 Ilya Verbin <iverbin@gmail.com>
* config/i386/driver-i386.c (host_detect_local_cpu): Fix detection of
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index a229a738399..3ac115c64f7 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -5957,11 +5957,12 @@ ix86_option_override_internal (bool main_args_p,
if (!(opts_set->x_target_flags & MASK_STV))
opts->x_target_flags |= MASK_STV;
/* Disable STV if -mpreferred-stack-boundary={2,3} or
- -mincoming-stack-boundary={2,3} - the needed
+ -mincoming-stack-boundary={2,3} or -mstackrealign - the needed
stack realignment will be extra cost the pass doesn't take into
account and the pass can't realign the stack. */
if (ix86_preferred_stack_boundary < 128
- || ix86_incoming_stack_boundary < 128)
+ || ix86_incoming_stack_boundary < 128
+ || opts->x_ix86_force_align_arg_pointer)
opts->x_target_flags &= ~MASK_STV;
if (!ix86_tune_features[X86_TUNE_AVX256_UNALIGNED_LOAD_OPTIMAL]
&& !(opts_set->x_target_flags & MASK_AVX256_SPLIT_UNALIGNED_LOAD))