A few arm effective-targets call check_effective_target_arm32 even though they would force an -march=XXX flag which support Arm and/or Thumb-2, thus making the arm32 check useless. This has an impact when the toolchain is configured with a default -march or -mcpu which supports Thumb-1 only: in such a case, arm32 is false and we skip many tests, thus reducing coverage.
This patch removes the call to check_effective_target_arm32 where it is useless, enabling almost 6400 tests. gcc/testsuite/ChangeLog: * lib/target-supports.exp (check_effective_target_arm_neon_ok_nocache): Remove arm32 check. (check_effective_target_arm_neon_fp16_ok_nocache): Likewise. (check_effective_target_arm_neon_softfp_fp16_ok_nocache): Likewise. (check_effective_target_arm_v8_neon_ok_nocache): Likewise. (check_effective_target_arm_neonv2_ok_nocache): Likewise. --- gcc/testsuite/lib/target-supports.exp | 69 ++++++++++++--------------- 1 file changed, 31 insertions(+), 38 deletions(-) diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 245943b7c3f..c7879bfdd5b 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -5470,23 +5470,21 @@ proc add_options_for_arm_vfp3 { flags } { 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 -mcpu=unset -march=armv7-a" "-mfloat-abi=hard" "-mfpu=neon -mfloat-abi=hard" "-mfpu=neon -mfloat-abi=hard -mcpu=unset -march=armv7-a"} { - if { [check_no_compiler_messages_nocache arm_neon_ok object { - #include <arm_neon.h> - int dummy; - #ifndef __ARM_NEON__ - #error not NEON - #endif - /* Avoid the case where a test adds -mfpu=neon, but the toolchain is - configured for -mcpu=arm926ej-s, for example. */ - #if __ARM_ARCH < 7 || __ARM_ARCH_PROFILE == 'M' - #error Architecture does not support NEON. - #endif - } "$flags"] } { - set et_arm_neon_flags $flags - return 1 - } + foreach flags {"" "-mfloat-abi=softfp" "-mfpu=neon" "-mfpu=neon -mfloat-abi=softfp" "-mfpu=neon -mfloat-abi=softfp -mcpu=unset -march=armv7-a" "-mfloat-abi=hard" "-mfpu=neon -mfloat-abi=hard" "-mfpu=neon -mfloat-abi=hard -mcpu=unset -march=armv7-a"} { + if { [check_no_compiler_messages_nocache arm_neon_ok object { + #include <arm_neon.h> + int dummy; + #ifndef __ARM_NEON__ + #error not NEON + #endif + /* Avoid the case where a test adds -mfpu=neon, but the toolchain is + configured for -mcpu=arm926ej-s, for example. */ + #if __ARM_ARCH < 7 || __ARM_ARCH_PROFILE == 'M' + #error Architecture does not support NEON. + #endif + } "$flags"] } { + set et_arm_neon_flags $flags + return 1 } } @@ -5672,8 +5670,7 @@ proc check_effective_target_arm_neon_fp16_ok_nocache { } { global et_arm_neon_fp16_flags global et_arm_neon_flags set et_arm_neon_fp16_flags "" - if { [check_effective_target_arm32] - && [check_effective_target_arm_neon_ok] } { + if { [check_effective_target_arm_neon_ok] } { foreach flags {"" "-mfloat-abi=softfp" "-mfpu=neon-fp16" "-mfpu=neon-fp16 -mfloat-abi=softfp" "-mfp16-format=ieee" @@ -5711,8 +5708,7 @@ proc check_effective_target_arm_neon_softfp_fp16_ok_nocache { } { global et_arm_neon_softfp_fp16_flags global et_arm_neon_flags set et_arm_neon_softfp_fp16_flags "" - if { [check_effective_target_arm32] - && [check_effective_target_arm_neon_ok] } { + if { [check_effective_target_arm_neon_ok] } { foreach flags {"-mfpu=neon-fp16 -mfloat-abi=softfp" "-mfpu=neon-fp16 -mfloat-abi=softfp -mfp16-format=ieee"} { if { [check_no_compiler_messages_nocache arm_neon_softfp_fp16_ok object { @@ -5848,22 +5844,20 @@ proc check_effective_target_arm_fp16_none_ok { } { proc check_effective_target_arm_v8_neon_ok_nocache { } { global et_arm_v8_neon_flags set et_arm_v8_neon_flags "" - if { [check_effective_target_arm32] } { - foreach flags {"" "-mfloat-abi=softfp" "-mfpu=neon-fp-armv8" "-mfpu=neon-fp-armv8 -mfloat-abi=softfp"} { - if { [check_no_compiler_messages_nocache arm_v8_neon_ok object { - #if __ARM_ARCH < 8 - #error not armv8 or later - #endif - #include "arm_neon.h" - void - foo () - { - __asm__ volatile ("vrintn.f32 q0, q0"); - } - } "$flags -mcpu=unset -march=armv8-a"] } { - set et_arm_v8_neon_flags $flags - return 1 + foreach flags {"" "-mfloat-abi=softfp" "-mfpu=neon-fp-armv8" "-mfpu=neon-fp-armv8 -mfloat-abi=softfp"} { + if { [check_no_compiler_messages_nocache arm_v8_neon_ok object { + #if __ARM_ARCH < 8 + #error not armv8 or later + #endif + #include "arm_neon.h" + void + foo () + { + __asm__ volatile ("vrintn.f32 q0, q0"); } + } "$flags -mcpu=unset -march=armv8-a"] } { + set et_arm_v8_neon_flags $flags + return 1 } } @@ -5884,8 +5878,7 @@ proc check_effective_target_arm_neonv2_ok_nocache { } { global et_arm_neonv2_flags global et_arm_neon_flags set et_arm_neonv2_flags "" - if { [check_effective_target_arm32] - && [check_effective_target_arm_neon_ok] } { + if { [check_effective_target_arm_neon_ok] } { foreach flags {"" "-mfloat-abi=softfp" "-mfpu=neon-vfpv4" "-mfpu=neon-vfpv4 -mfloat-abi=softfp"} { if { [check_no_compiler_messages_nocache arm_neonv2_ok object { #include "arm_neon.h" -- 2.34.1