diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2021-07-30 05:58:38 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2021-07-30 06:05:37 -0700 |
commit | 854ef6e50acf1b182ddaf007cff2cf60545692b0 (patch) | |
tree | 61c009f5ccb7743a5e133f3f9bfde84eb3258682 /gcc | |
parent | 011134dc19dc78fc3780cfc1d79bfc128355608f (diff) | |
download | gcc-854ef6e50acf1b182ddaf007cff2cf60545692b0.zip gcc-854ef6e50acf1b182ddaf007cff2cf60545692b0.tar.gz gcc-854ef6e50acf1b182ddaf007cff2cf60545692b0.tar.bz2 |
x86: Don't enable LZCNT/POPCNT if disabled explicitly
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/pr101685.c: New test.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/i386/i386-options.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr101685.c | 10 |
2 files changed, 14 insertions, 2 deletions
diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c index 3416a4f..6b78998 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/pr101685.c b/gcc/testsuite/gcc.target/i386/pr101685.c new file mode 100644 index 0000000..0c743ec --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr101685.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 |