These tests fail when multilib options use -mfpu=xxxx and override the -mfpu=neon-fp16 used for the test:
g++.dg/ext/arm-fp16/arm-fp16-ops-5.C g++.dg/ext/arm-fp16/arm-fp16-ops-6.C gcc.dg/torture/arm-fp16-ops-5.c gcc.dg/torture/arm-fp16-ops-6.c gcc.target/arm/fp16-compile-vcvt.c The option -mfpu-neon-fp16 is added via "dg-add-options arm_neon_fp16" after an earlier "dg-require-effective-target arm_neon_fp16_ok". This patch modifies check_effective_target_arm_neon_fp16_ok_nocache to return 0 (causing the test to be skipped) if multilib flags include -mfpu= with a value other than neon-fp16. Tested on arm-none-linux-gnueabi for several multilibs; these tests are compile-only so it didn't matter that I didn't have runtime support for them. OK for trunk and 4.6 branch?
2011-06-07 Janis Johnson <jani...@codesourcery.com> * lib/target-supports.exp (check_effective_target_arm_neon_fp16_ok_nocache): Return 0 if multilib flags use -mfpu with a value other than neon-fp16. Index: gcc/testsuite/lib/target-supports.exp =================================================================== --- gcc/testsuite/lib/target-supports.exp (revision 174764) +++ gcc/testsuite/lib/target-supports.exp (working copy) @@ -1954,6 +1954,11 @@ global et_arm_neon_fp16_flags set et_arm_neon_fp16_flags "" if { [check_effective_target_arm32] } { + # Multilib flags that include -mfpu would override the flags set here; + # skip them. + if [check-flags [list "" { *-*-* } { "-mfpu=*" } { "-mfpu=neon-fp16" } ]] { + return 0 + } # Always add -mfpu=neon-fp16, since there is no preprocessor # macro for FP16 support. foreach flags {"-mfpu=neon-fp16" "-mfpu=neon-fp16 -mfloat-abi=softfp"} {