testsuite: [arm] Add arm_softfp_ok and arm_hard_ok effective targets.
authorChristophe Lyon <christophe.lyon@linaro.org>
Wed, 22 Apr 2020 13:42:04 +0000 (13:42 +0000)
committerChristophe Lyon <christophe.lyon@linaro.org>
Wed, 22 Apr 2020 13:56:51 +0000 (13:56 +0000)
For arm-linux-gnueabi* targets, a toolchain cannot support the
float-abi opposite to the one it has been configured for: since glibc
does not support such multilibs, we end up lacking gnu/stubs-*.h when
including stdint.h for instance.

This patch introduces two new effective targets to detect whether we
can compile tests with -mfloat-abi=softfp or -mfloat-abi=hard.

This enables to make such tests unsupported rather than fail.

2020-04-22  Christophe Lyon  <christophe.lyon@linaro.org>

gcc/testsuite/
* lib/target-supports.exp (arm_softfp_ok): New effective target.
(arm_hard_ok): Likewise.

gcc/
* doc/sourcebuild.texi (arm_softfp_ok, arm_hard_ok): Document.

gcc/ChangeLog
gcc/doc/sourcebuild.texi
gcc/testsuite/ChangeLog
gcc/testsuite/lib/target-supports.exp

index 85f6f4c2c8b3cf89e582e341c7096fabe58df805..961048adb2abde94ef0c9259b03ba546ce90fc5a 100644 (file)
@@ -1,3 +1,7 @@
+2020-04-22  Christophe Lyon  <christophe.lyon@linaro.org>
+
+       * doc/sourcebuild.texi (arm_softfp_ok, arm_hard_ok): Document.
+
 2020-04-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
             Andre Vieira  <andre.simoesdiasvieira@arm.com>
             Mihail Ionescu  <mihail.ionescu@arm.com>
index c1642bad39851cdf4188c21cad6e13722ba86f2a..b69612024be0082b15243ae52dbbbbda3a9dd3d7 100644 (file)
@@ -1971,6 +1971,14 @@ ARM Target supports options suitable for accessing the Q-bit manipulation
 intrinsics from @code{arm_acle.h}.
 Some multilibs may be incompatible with these options.
 
+@item arm_softfp_ok
+@anchor{arm_softfp_ok}
+ARM target supports the @code{-mfloat-abi=softfp} option.
+
+@item arm_hard_ok
+@anchor{arm_hard_ok}
+ARM target supports the @code{-mfloat-abi=hard} option.
+
 @end table
 
 @subsubsection AArch64-specific attributes
index 36b2893a208067369c923d1d17e6ad4f51dd30b6..9c3a03cb73f565b04f39f3810a68905356dd753c 100644 (file)
@@ -1,3 +1,8 @@
+2020-04-22  Christophe Lyon  <christophe.lyon@linaro.org>
+
+        * lib/target-supports.exp (arm_softfp_ok): New effective target.
+        (arm_hard_ok): Likewise.
+
 2020-04-22  Tobias Burnus  <tobias@codesourcery.com>
 
        PR fortran/94709
index 5704a2fc5830d5b4290f5f777c2389a3d78daea9..307a67ed66c6abcf2795f19347cb50b5a020f1ae 100644 (file)
@@ -4739,6 +4739,26 @@ proc check_effective_target_default_branch_protection { } {
     return [check_configured_with "enable-standard-branch-protection"]
 }
 
+# Return 1 if this is an ARM target supporting -mfloat-abi=softfp.
+
+proc check_effective_target_arm_softfp_ok { } {
+    return [check_no_compiler_messages arm_softfp_ok object {
+       #include <stdint.h>
+       int dummy;
+       int main (void) { return 0; }
+       } "-mfloat-abi=softfp"]
+}
+
+# Return 1 if this is an ARM target supporting -mfloat-abi=hard.
+
+proc check_effective_target_arm_hard_ok { } {
+    return [check_no_compiler_messages arm_hard_ok object {
+       #include <stdint.h>
+       int dummy;
+       int main (void) { return 0; }
+       } "-mfloat-abi=hard"]
+}
+
 # Return 1 if the target supports ARMv8.1-M MVE with floating point
 # instructions, 0 otherwise.  The test is valid for ARM.
 # Record the command line options needed.