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

Reply via email to