https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65837
--- Comment #28 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> --- (In reply to chrbr from comment #27) > > > > Should be reproducible without LTO with > > > > int __attribute__((target("fpu=neon"))) main() > > { > > ... > > } > > > > and compiling without -mfpu=neon. > > > > note that #include "arm_neon.h" can't be preprocessed and that the builtins > are not recognized without a global flag: > > "arm_neon.h:31:2: error: #error You must enable NEON instructions (e.g. > -mfloat-abi=softfp -mfpu=neon) to use arm_neon.h" > > A further improvement for that might be to set the attribute for all the > functions defines in neon.h and remove the #error check. > > e.g: > > __extension__ static __inline float32x2_t > __attribute__ ((__always_inline__)) > __attribute__((target("fpu=neon"))) > vadd_f32 (float32x2_t __a, float32x2_t __b) > { > return (float32x2_t) __builtin_neon_vaddv2sf (__a, __b); > } > > or use a #pragma target (("mfpu=neon")) region. The #pragma is what I would expect.