I realized that commit 87c753ac241f25d222d46ba1ac66ceba89d6a200 Author: H.J. Lu <hjl.to...@gmail.com> Date: Fri Aug 21 09:42:49 2020 -0700
x86: Add target("general-regs-only") function attribute is incomplete since it is impossible to call integer intrinsics from a function with general-regs-only target attribute. We need to add a general_regs_only function attribute to go with it to mark functions which use only general purpose registers. When making inlining decisions on such functions, x86 backend can exclude non-GPR compiler options. The general_regs_only attribute should be added to all x86 intrinsics which use only general purpose registers. H.J. Lu (2): x86: Move OPTION_MASK_* to i386-common.h x86: Add general_regs_only function attribute gcc/common/config/i386/i386-common.c | 297 ------------------ gcc/common/config/i386/i386-common.h | 315 +++++++++++++++++++ gcc/config/i386/adxintrin.h | 18 +- gcc/config/i386/bmi2intrin.h | 24 +- gcc/config/i386/bmiintrin.h | 92 ++++-- gcc/config/i386/cetintrin.h | 33 +- gcc/config/i386/cldemoteintrin.h | 3 +- gcc/config/i386/clflushoptintrin.h | 3 +- gcc/config/i386/clwbintrin.h | 3 +- gcc/config/i386/clzerointrin.h | 4 +- gcc/config/i386/enqcmdintrin.h | 6 +- gcc/config/i386/fxsrintrin.h | 12 +- gcc/config/i386/hresetintrin.h | 3 +- gcc/config/i386/i386-options.c | 2 + gcc/config/i386/i386.c | 29 +- gcc/config/i386/i386.h | 1 + gcc/config/i386/ia32intrin.h | 82 +++-- gcc/config/i386/lwpintrin.h | 24 +- gcc/config/i386/lzcntintrin.h | 20 +- gcc/config/i386/movdirintrin.h | 9 +- gcc/config/i386/mwaitxintrin.h | 8 +- gcc/config/i386/pconfigintrin.h | 3 +- gcc/config/i386/pkuintrin.h | 6 +- gcc/config/i386/popcntintrin.h | 8 +- gcc/config/i386/rdseedintrin.h | 9 +- gcc/config/i386/rtmintrin.h | 9 +- gcc/config/i386/serializeintrin.h | 8 +- gcc/config/i386/sgxintrin.h | 9 +- gcc/config/i386/tbmintrin.h | 80 +++-- gcc/config/i386/tsxldtrkintrin.h | 6 +- gcc/config/i386/uintrintrin.h | 12 +- gcc/config/i386/waitpkgintrin.h | 9 +- gcc/config/i386/wbnoinvdintrin.h | 3 +- gcc/config/i386/x86gprintrin.h | 45 ++- gcc/config/i386/xsavecintrin.h | 6 +- gcc/config/i386/xsaveintrin.h | 18 +- gcc/config/i386/xsaveoptintrin.h | 6 +- gcc/config/i386/xsavesintrin.h | 12 +- gcc/config/i386/xtestintrin.h | 3 +- gcc/doc/extend.texi | 5 + gcc/testsuite/gcc.target/i386/pr99744-3.c | 13 + gcc/testsuite/gcc.target/i386/pr99744-4.c | 352 ++++++++++++++++++++++ 42 files changed, 1134 insertions(+), 476 deletions(-) create mode 100644 gcc/common/config/i386/i386-common.h create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-3.c create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-4.c -- 2.30.2