On Fri, Jul 30, 2021 at 3:04 PM H.J. Lu <hjl.to...@gmail.com> wrote: > > gcc/ > > PR target/101685 > * config/i386/i386-options.c (ix86_option_override_internal): > Don't enable LZCNT/POPCNT if they have been disabled explicitly. > > gcc/testsuite/ > > PR target/101685 > * gcc.target/i386/pr-101685.c: New test.
OK. Thanks, Uros. > --- > gcc/config/i386/i386-options.c | 6 ++++-- > gcc/testsuite/gcc.target/i386/pr-101685.c | 10 ++++++++++ > 2 files changed, 14 insertions(+), 2 deletions(-) > create mode 100644 gcc/testsuite/gcc.target/i386/pr-101685.c > > diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c > index 3416a4f1752..6b789988baa 100644 > --- a/gcc/config/i386/i386-options.c > +++ b/gcc/config/i386/i386-options.c > @@ -2124,8 +2124,10 @@ ix86_option_override_internal (bool main_args_p, > if (((processor_alias_table[i].flags & PTA_ABM) != 0) > && !TARGET_EXPLICIT_ABM_P (opts)) > { > - SET_TARGET_LZCNT (opts); > - SET_TARGET_POPCNT (opts); > + if (!TARGET_EXPLICIT_LZCNT_P (opts)) > + SET_TARGET_LZCNT (opts); > + if (!TARGET_EXPLICIT_POPCNT_P (opts)) > + SET_TARGET_POPCNT (opts); > } > > if ((processor_alias_table[i].flags > diff --git a/gcc/testsuite/gcc.target/i386/pr-101685.c > b/gcc/testsuite/gcc.target/i386/pr-101685.c > new file mode 100644 > index 00000000000..0c743ecad00 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/i386/pr-101685.c > @@ -0,0 +1,10 @@ > +/* { dg-do compile } */ > +/* { dg-options "-O2 -march=amdfam10 -mno-lzcnt -mno-popcnt" } */ > + > +#ifdef __LZCNT__ > +# error LZCNT should be disabled > +#endif > + > +#ifdef __POPCNT__ > +# error POPCNT should be disabled > +#endif > -- > 2.31.1 >