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.