https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90129
Bug ID: 90129 Summary: Wrong error: inlining failed in call to always_inline ‘_mm256_adds_epi16’: target specific option mismatch Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org Target Milestone: --- Following code should be accepted: $ cat pragma.c #include <xmmintrin.h> #include <emmintrin.h> #include <immintrin.h> #pragma GCC target ("arch=haswell") __m256i adds_epi16(__m256i first, __m256i second) { return _mm256_adds_epi16(first, second); } But we reject that since for ever: gcc pragma.c In file included from /usr/lib64/gcc/x86_64-suse-linux/8/include/immintrin.h:43, from pragma.c:3: pragma.c: In function ‘adds_epi16’: /usr/lib64/gcc/x86_64-suse-linux/8/include/avx2intrin.h:140:1: error: inlining failed in call to always_inline ‘_mm256_adds_epi16’: target specific option mismatch _mm256_adds_epi16 (__m256i __A, __m256i __B) ^~~~~~~~~~~~~~~~~ pragma.c:8:10: note: called from here return _mm256_adds_epi16(first, second); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ While: cat pragma.c && gcc pragma.c -march=haswell -c #include <xmmintrin.h> #include <emmintrin.h> #include <immintrin.h> __m256i adds_epi16(__m256i first, __m256i second) { return _mm256_adds_epi16(first, second); } is fine