I have a question about my own patch. In doing testing I realized that if I use the aarch64_vector_pcs attribute on a platform without SIMD (i.e. -march=armv8.1-a+nosimd) I get an ICE. That is obviously not what we want but I was wondering what the right behaviour is.
We certainly don't want to generate code for a SIMD function on a target that does not support SIMD, but is it OK to declare something with the simd or aarch64_vector_pcs attribute if it is never used or called? Or should even the declaration of a function with the simd/aarch64_vector_pcs attribute result in a compilation error? I don't think we want to complain about simd declarations because those could show up in the system headers like mathcalls.h even when not used. Or should those be ifdef'ed in some way based on the __ARM_NEON macro so they don't show up when not compiling for SIMD? Any ideas on where should this check be done, I thought the TARGET_OPTION_VALID_ATTRIBUTE_P hook might be the right place, but that seems to be specific to the 'target' attribute only, not attributes in general. Steve Ellcey sell...@cavium.com