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"} {

Reply via email to