https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101284
Bug ID: 101284 Summary: conflicting arch/fpu result in unexpected preprocessor defines Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: clyon at gcc dot gnu.org Target Milestone: --- Compiling with -march=armv8.1-m.main+mve.fp -mfpu=neon-fp16 -mfloat-abi=softfp produces no warning and generates the following defines: #define __ARM_NEON__ 1 #define __ARM_NEON 1 #define __ARM_NEON_FP 6 #define __ARM_FEATURE_MVE 3 which I didn't expect. This also means that TARGET_HAVE_MVE is defined in the compiler as well as TARGET_NEON. So vectorization code that has to do different things for Neon and MVE can quite easily ICE if you provide all these flags on the command-line. (I wanted to compare vectorization with MVE and Neon on one testcase and hoped to override the MVE FPU by just adding -mfpu=neon-fp16 and the end of the command-line).