https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53192
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|wrong-code |diagnostic, rejects-valid Target|x86-64 |x86-64 (LP64) Status|WAITING |NEW --- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Confirmed. Here is a testcase which compiles just fine at -O0 but fails at -O1 and above: ``` #include <immintrin.h> __m128i f(long *base, __m128i vindx, int scale) { return _mm_i32gather_epi64 (base, vindx, 1); } __m128i g(long long *base, __m128i vindx, int scale) { return _mm_i32gather_epi64 (base, vindx, 1); } ``` Note clang's version is to always use a macro here. ICC directly defines these internally as real intrinsics and accepts the above without an error.