https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89124

            Bug ID: 89124
           Summary: __attribute__((no_sanitize_address)) interferes with
                    __attribute__((target(xxx)))
           Product: gcc
           Version: 8.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: sanitizer
          Assignee: unassigned at gcc dot gnu.org
          Reporter: thiago at kde dot org
                CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
                    jakub at gcc dot gnu.org, kcc at gcc dot gnu.org, marxin at 
gcc dot gnu.org
  Target Milestone: ---

$ cat test.cpp
#include <immintrin.h>

#ifdef __GNUC__
__attribute__((target("avx2"), no_sanitize_address))
#endif
void f(void *ptr)
{
    _mm256_loadu_si256((__m256i *)ptr);
}
$ gcc -c test.cpp && echo ok
ok
$ gcc -c -fsanitize=addreess test.cpp
In file included from
/opt/compiler-explorer/gcc-8.2.0/lib/gcc/x86_64-linux-gnu/8.2.0/include/immintrin.h:41,
                 from <source>:1:
/opt/compiler-explorer/gcc-8.2.0/lib/gcc/x86_64-linux-gnu/8.2.0/include/avxintrin.h:
In function 'void f(void*)':
/opt/compiler-explorer/gcc-8.2.0/lib/gcc/x86_64-linux-gnu/8.2.0/include/avxintrin.h:919:1:
error: inlining failed in call to always_inline '__m256i
_mm256_loadu_si256(const __m256i_u*)': function attribute mismatch
 _mm256_loadu_si256 (__m256i_u const *__P)
 ^~~~~~~~~~~~~~~~~~
<source>:8:23: note: called from here
     _mm256_loadu_si256((__m256i *)ptr);
     ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~

Works fine in Clang. Godbolt link: https://godbolt.org/z/rg5kUD

Reply via email to