]> gcc.gnu.org Git - gcc.git/commitdiff
i386: Properly set ix86_isa_flags
authorMartin Liska <mliska@suse.cz>
Mon, 8 Mar 2021 11:56:06 +0000 (12:56 +0100)
committerMartin Liska <mliska@suse.cz>
Tue, 9 Mar 2021 08:26:55 +0000 (09:26 +0100)
gcc/ChangeLog:

PR target/99464
* config/i386/i386-options.c (ix86_option_override_internal):
Set isa_flags for OPTS argument and not for the global
global_options.

gcc/testsuite/ChangeLog:

PR target/99464
* gcc.target/i386/pr99464.c: New test.

gcc/config/i386/i386-options.c
gcc/testsuite/gcc.target/i386/pr99464.c [new file with mode: 0644]

index 410fa0cc436ce44b7562653ad67a3f62a05e17b0..e93935f6f2c3b3b2d9b5b86f8296508c4882d0ab 100644 (file)
@@ -2159,11 +2159,11 @@ ix86_option_override_internal (bool main_args_p,
            && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_MOVBE))
          opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_MOVBE;
        if (((processor_alias_table[i].flags & PTA_AES) != 0)
-           && !(ix86_isa_flags_explicit & OPTION_MASK_ISA_AES))
-         ix86_isa_flags |= OPTION_MASK_ISA_AES;
+           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_AES))
+         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AES;
        if (((processor_alias_table[i].flags & PTA_SHA) != 0)
-           && !(ix86_isa_flags_explicit & OPTION_MASK_ISA_SHA))
-         ix86_isa_flags |= OPTION_MASK_ISA_SHA;
+           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_SHA))
+         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SHA;
        if (((processor_alias_table[i].flags & PTA_PCLMUL) != 0)
            && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_PCLMUL))
          opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PCLMUL;
diff --git a/gcc/testsuite/gcc.target/i386/pr99464.c b/gcc/testsuite/gcc.target/i386/pr99464.c
new file mode 100644 (file)
index 0000000..98dd938
--- /dev/null
@@ -0,0 +1,15 @@
+/* PR target/99464 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+#pragma GCC target("arch=cannonlake")
+
+#include <immintrin.h>
+
+volatile __m128i x;
+
+void extern
+sha_test (void)
+{
+  x = _mm_sha1msg1_epu32 (x, x);
+}
This page took 0.083842 seconds and 5 git commands to generate.