Some multilibs do not support Thumb mode on ARM targets. This is the
case for instance when target is arm-linux-gnueabihf and with
-march=armv5-t: Thumb-1 hard-float VFP ABI is not implemented.

In this configuration, gcc.target/arm/attr_thumb.c is failing because
we switch thumb mode via an attribute.

This patch makes this test unsupported, by adding a new function in
lib/target-supports.exp: check_effective_target_arm_thumb_ok.

OK?

2015-07-09  Christophe Lyon  <christophe.l...@linaro.org>

        * lib/target-supports.exp (check_effective_target_arm_thumb_ok):
        New function.
        * gcc.target/arm/attr_thumb.c: Call
        check_effective_target_arm_thumb_ok.

Change-Id: I60d9e008a0691f24d1d8c295a7e4364fb5df9dc3

diff --git a/gcc/testsuite/gcc.target/arm/attr_thumb.c 
b/gcc/testsuite/gcc.target/arm/attr_thumb.c
index 02ddfda..6553e65 100644
--- a/gcc/testsuite/gcc.target/arm/attr_thumb.c
+++ b/gcc/testsuite/gcc.target/arm/attr_thumb.c
@@ -1,5 +1,7 @@
 /* Check that attribute target thumb is recognized. */
 /* { dg-do compile } */
+/* Make sure the current multilib supports thumb.  */
+/* { dg-require-effective-target arm_thumb_ok } */
 /* { dg-options "-O2 -mno-restrict-it" } */
 /* { dg-final { scan-assembler-not "\\.arm"  } } */
 /* { dg-final { scan-assembler "\\.thumb_func" } } */
diff --git a/gcc/testsuite/lib/target-supports.exp 
b/gcc/testsuite/lib/target-supports.exp
index bf512e9..7cc5bbf 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -2910,6 +2910,15 @@ foreach { armfunc armflag armdef } { v4 "-march=armv4 
-marm" __ARM_ARCH_4__
     }]
 }
 
+# Return 1 if this is an ARM target supporting -mthumb.  Some
+# multilibs may be incompatible with this option.
+
+proc check_effective_target_arm_thumb_ok { } {
+    return [check_no_compiler_messages arm_thumb_ok object {
+       int foo (int i) { return i; }
+       } "-mthumb"]
+}
+
 # Return 1 if this is an ARM target where -marm causes ARM to be
 # used (not Thumb)
 
-- 
2.1.4

Reply via email to