https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99744
Bug ID: 99744 Summary: __attribute__ ((target("general-regs-only"))) doesn't work with GPR intrinsics Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com CC: crazylht at gmail dot com, ubizjak at gmail dot com Target Milestone: --- Target: x86-64,i386 [hjl@gnu-cfl-2 uintr-2]$ cat x.c #include <x86intrin.h> extern unsigned long long int curr_deadline; extern void bar (void); __attribute__ ((target("general-regs-only"))) void foo (void) { if (__rdtsc () < curr_deadline) return; bar (); } [hjl@gnu-cfl-2 uintr-2]$ /usr/gcc-11.0.0-x32/bin/gcc -S x.c In file included from /usr/gcc-11.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/11.0.0/include/x86gprintrin.h:27, from /usr/gcc-11.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/11.0.0/include/x86intrin.h:27, from x.c:1: x.c: In function ‘foo’: /usr/gcc-11.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/11.0.0/include/ia32intrin.h:112:1: error: inlining failed in call to ‘always_inline’ ‘__rdtsc’: target specific option mismatch 112 | __rdtsc (void) | ^~~~~~~ x.c:10:7: note: called from here 10 | if (__rdtsc () < curr_deadline) | ^~~~~~~~~~ [hjl@gnu-cfl-2 uintr-2]$ ls foo.c Makefile x.c [hjl@gnu-cfl-2 uintr-2]$ ix86_can_inline_p failed since caller disabled SSE and MMX, but __rdtsc had SSE and MMX enanbled. However GPR intrinsics don't need SSE nor MMX.