[Bug testsuite/114568] [14 regression] g++.dg/vect/pr84556.cc fails to produce executable since r14-9706-gb8e7aaaf350a45
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114568 --- Comment #5 from Maxim Kuvyrkov --- Looking at this problem more, I think the issue is due to ARM target trying hard to avoid UNSUPPORTED tests, instead of embracing them. For the vectorization NEON check we have ... === proc check_effective_target_arm_neon_ok_nocache { } { global et_arm_neon_flags set et_arm_neon_flags "" if { [check_effective_target_arm32] } { foreach flags {"" "-mfloat-abi=softfp" "-mfpu=neon" "-mfpu=neon -mfloat-abi=softfp" "-mfpu=neon -mfloat-abi=softfp -march=armv7-a" "-mfloat-abi=hard" "-mfpu=neon -mfloat-abi=hard" "-mfpu=neon -mfloat-abi=hard -march=armv7-a"} { if { [check_no_compiler_messages_nocache arm_neon_ok object { #include ... === ... where target tries to find a set of flags compatible with _any_ of the built multilibs to run the testsuite. I think this is excessive, since each multilib should be tested on its own merits, and if armv7-m does not support vectorization, there should be no effort to try and switch to armv7-a or armv8-m+mve multilib in order to run vectorization tests. In other words, vectorization tests should be marked UNSUPPORTED in armv7-m, and PASS/FAIL in armv7-a and/or armv8-m+mve. In practical terms, my proposed solution to this problem is to remove all "foreach flags" options except for the default "". ARM maintainers, what am I missing?
[Bug testsuite/114568] [14 regression] g++.dg/vect/pr84556.cc fails to produce executable since r14-9706-gb8e7aaaf350a45
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114568 --- Comment #4 from Christophe Lyon --- I'm wondering whether you missed check_effective_target_arm_arch_FUNC_link and friends? Maybe check_effective_target_arm_arch_v7a_neon_link would work here, but it does not use the exact same flags.
[Bug testsuite/114568] [14 regression] g++.dg/vect/pr84556.cc fails to produce executable since r14-9706-gb8e7aaaf350a45
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114568 --- Comment #3 from Maxim Kuvyrkov --- Changing from compile-only to link test is as simple as changing "object" to "executable" in [check_no_compiler_messages_nocache arm_neon_ok object ...] . However, ... this pattern of checking for ARM architectural features is shared by 20+ check_effective_target_arm_* routines. IMO, we should either update all of these to be link tests (unless there is a good reason to keep them as compile-only that we can document in the comments). Or just accept this vectorization test failure on ARM targets that don't support vectorization.
[Bug testsuite/114568] [14 regression] g++.dg/vect/pr84556.cc fails to produce executable since r14-9706-gb8e7aaaf350a45
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114568 --- Comment #2 from Christophe Lyon --- I think the last -march option overrides the previous one(s). I'd say the test should use an effective-target which checks that linking is actually OK rather than just a compile OK test. Not sure if an adequate one already exists, but there are already plenty :-)
[Bug testsuite/114568] [14 regression] g++.dg/vect/pr84556.cc fails to produce executable since r14-9706-gb8e7aaaf350a45
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114568 Maxim Kuvyrkov changed: What|Removed |Added CC||clyon at gcc dot gnu.org, ||rearnsha at gcc dot gnu.org --- Comment #1 from Maxim Kuvyrkov --- The test now fails with linker error: .../arm-eabi/bin/ld: error: /tmp/cc2Q27GE.o: conflicting architecture profiles A/M This is due to command line having -mthumb -march=armv7-m -mtune=cortex-m3 -mfloat-abi=softfp -mfpu=auto ... -mfpu=neon -mfloat-abi=softfp -march=armv7-a The first part comes from toolchain configuration settings, and the second part (-mfpu=neon -mfloat-abi=softfp -march=armv7-a) comes from check_effective_target_arm_neon_ok_nocache(). Surprisingly (to me), GCC accepts such mixed options, which makes check_effective_target_arm_neon_ok_nocache() succeed, since it's only doing a compilation test. The linker, though, fails. Richard E., it is expected that GCC accepts conflicting -march= options?
[Bug testsuite/114568] [14 regression] g++.dg/vect/pr84556.cc fails to produce executable since r14-9706-gb8e7aaaf350a45
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114568 Richard Biener changed: What|Removed |Added Target Milestone|--- |14.0 Target||arm