http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58889
Bug ID: 58889 Summary: GCC 4.9 fails to compile certain functions with intrinsics with __attribute__((target)) Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: thiago at kde dot org Source: $ cat t.c #include <immintrin.h> __attribute__((target("avx2"))) int f(void *ptr) { return _mm256_movemask_epi8(_mm256_loadu_si256((__m256i*)ptr)); } Works: $ ~/gcc4.9/bin/g++ -S -O3 -o /dev/null t.c $ ~/gcc4.9/bin/g++ -m32 -S -O3 -o /dev/null t.c $ ~/gcc4.9/bin/g++ -march=core2 -S -O3 -o /dev/null t.c $ ~/gcc4.9/bin/g++ -march=core2 -m32 -S -O3 -o /dev/null t.c $ ~/gcc4.9/bin/g++ -march=nocona -S -O3 -o /dev/null t.c $ ~/gcc4.9/bin/g++ -march=nocona -m32 -S -O3 -o /dev/null t.c $ ~/gcc4.9/bin/g++ -march=prescott -m32 -S -O3 -o /dev/null t.c $ ~/gcc4.9/bin/g++ -march=pentium4 -m32 -S -O3 -o /dev/null t.c $ ~/gcc4.9/bin/g++ -march=pentium3 -m32 -S -O3 -o /dev/null t.c Fails: $ ~/gcc4.9/bin/g++ -march=pentium2 -m32 -S -O3 -o /dev/null t.c avxintrin.h: In function ‘int f(void*)’: avxintrin.h:890:1: error: inlining failed in call to always_inline ‘__m256i _mm256_loadu_si256(const __m256i*)’: target specific option mismatch _mm256_loadu_si256 (__m256i const *__P) ^ [...] g++: internal compiler error: Segmentation fault (program cc1plus) 0x409614 execute /home/thiago/src/gcc/gcc/gcc.c:2864 $ ~/gcc4.9/bin/g++ -march=pentium -m32 -S -O3 -o /dev/null t.c avxintrin.h: In function ‘int f(void*)’: avxintrin.h:890:1: error: inlining failed in call to always_inline ‘__m256i _mm256_loadu_si256(const __m256i*)’: target specific option mismatch _mm256_loadu_si256 (__m256i const *__P) ^ [...] [no segfault] This is an unpatched, pristine GCC, built from trunk@203862. System: Linux 64-bit (Fedora 17) Configure options: --enable-lang=c,c++