aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorH.J. Lu <hongjiu.lu@intel.com>2011-05-23 16:51:42 +0000
committerH.J. Lu <hjl@gcc.gnu.org>2011-05-23 09:51:42 -0700
commit34a061bed589449b2bf2efb42e017805bc173be7 (patch)
tree196db598d1cb44738232656628850a8fd6ae7bfe /gcc
parentc375a3a4ef026031d8116df122fa0193eb6a922f (diff)
downloadgcc-34a061bed589449b2bf2efb42e017805bc173be7.zip
gcc-34a061bed589449b2bf2efb42e017805bc173be7.tar.gz
gcc-34a061bed589449b2bf2efb42e017805bc173be7.tar.bz2
Save the initial options after checking vzeroupper.
gcc/ 2011-05-23 H.J. Lu <hongjiu.lu@intel.com> PR target/47315 * config/i386/i386.c (ix86_option_override_internal): Save the initial options after checking vzeroupper. gcc/testsuite/ 2011-05-23 H.J. Lu <hongjiu.lu@intel.com> PR target/47315 * gcc.target/i386/pr47315.c: New test. From-SVN: r174078
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.c11
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr47315.c10
4 files changed, 27 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a3cb0f1..1d46b04 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2011-05-23 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/47315
+ * config/i386/i386.c (ix86_option_override_internal): Save the
+ initial options after checking vzeroupper.
+
2011-05-23 David Li <davidxl@google.com>
PR tree-optimization/48988
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 0709be8..854e376 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -4191,11 +4191,6 @@ ix86_option_override_internal (bool main_args_p)
#endif
}
- /* Save the initial options in case the user does function specific options */
- if (main_args_p)
- target_option_default_node = target_option_current_node
- = build_target_option_node ();
-
if (TARGET_AVX)
{
/* When not optimize for size, enable vzeroupper optimization for
@@ -4217,6 +4212,12 @@ ix86_option_override_internal (bool main_args_p)
/* Disable vzeroupper pass if TARGET_AVX is disabled. */
target_flags &= ~MASK_VZEROUPPER;
}
+
+ /* Save the initial options in case the user does function specific
+ options. */
+ if (main_args_p)
+ target_option_default_node = target_option_current_node
+ = build_target_option_node ();
}
/* Return TRUE if VAL is passed in register with 256bit AVX modes. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 72aae61..85137d0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2011-05-23 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/47315
+ * gcc.target/i386/pr47315.c: New test.
+
2011-05-23 Jason Merrill <jason@redhat.com>
* g++.dg/cpp0x/lambda/lambda-eh2.C: New.
diff --git a/gcc/testsuite/gcc.target/i386/pr47315.c b/gcc/testsuite/gcc.target/i386/pr47315.c
new file mode 100644
index 0000000..871d3f1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr47315.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -mvzeroupper" } */
+
+__attribute__ ((__target__ ("avx")))
+float bar (float f) {}
+
+void foo (float f)
+{
+ bar (f);
+}