http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52695
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org, | |torvald at gcc dot gnu.org --- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-03-24 10:57:29 UTC --- Looks like a bug in libitm/config/x86/target.h: // We'll be using some of the cpu builtins, and their associated types. #ifndef __cplusplus /* ??? It's broken for C++. */ #include <x86intrin.h> #else # ifdef __SSE2__ # include <emmintrin.h> # elif defined(__SSE__) # include <xmmintrin.h> # endif # ifdef __AVX__ # include <immintrin.h> # endif #endif No idea what "brokeness" the above talks about, it works just fine for me in C++, so IMHO it just should always include x86intrin.h, but certainly if __MMX__ is defined, but no __SSE__, the above won't include in C++ any header which would define __m64.