On Mon, Mar 8, 2021 at 2:52 PM Martin Liška <mli...@suse.cz> wrote:
>
> Hi.
>
> The bug is about usage of ix86_isa_flags instead of opts->x_ix86_isa_flags.
> I'm planning a bigger refactoring regarding the flags & PTA_PCLMUL conditions.
>
> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
>
> Ready to be installed?
> Thanks,
> Martin
>
> 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.

OK.

Thanks,
Uros.

> ---
>   gcc/config/i386/i386-options.c          |  8 ++++----
>   gcc/testsuite/gcc.target/i386/pr99464.c | 15 +++++++++++++++
>   2 files changed, 19 insertions(+), 4 deletions(-)
>   create mode 100644 gcc/testsuite/gcc.target/i386/pr99464.c
>
> diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c
> index cdeabbfca4b..982c335e1fa 100644
> --- a/gcc/config/i386/i386-options.c
> +++ b/gcc/config/i386/i386-options.c
> @@ -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
> index 00000000000..98dd938973e
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/pr99464.c
> @@ -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);
> +}
> --
> 2.30.1
>

Reply via email to