[arm] Make gcc.target/arm/copysign_softfloat_1.c more robust
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Mon, 22 Jan 2018 10:50:20 +0000 (10:50 +0000)
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>
Mon, 22 Jan 2018 10:50:20 +0000 (10:50 +0000)
This test has needlessly restrictive requirements. It tries to force a soft-float target and tries to run.
This makes it unsupportable for any non-soft-float variant.
In fact, the test can be a run-time test for any target, and only the scan-assembler tests are specific to
-mfloat-abi=soft. So this patch makes the test always runnable and makes the scan-assembler checks predicable
on the the new arm_sotftfloat effective target check.

* doc/sourcebuild.texi (arm_softfloat): Document.

* lib/target-supports.exp (check_effective_target_arm_softfloat):
New procedure.
* gcc.target/arm/copysign_softfloat_1.c: Allow running everywhere.
Adjust scan-assembler checks for soft-float.

From-SVN: r256940

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

index 0308f35d10fe3671a53be7ffd21113aa8f81717e..f3fe4f69710168080385047392777eb81707cd0f 100644 (file)
@@ -1,3 +1,7 @@
+2018-01-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       * doc/sourcebuild.texi (arm_softfloat): Document.
+
 2018-01-21  John David Anglin  <danglin@gcc.gnu.org>
 
        PR gcc/77734
index f0233c9cca4ca32248db407bf00fb4c97eb740b1..69fbf6ac76842ae90fcf4f07638755c18ecc23c9 100644 (file)
@@ -1650,6 +1650,10 @@ ARM target adheres to the VFP and Advanced SIMD Register Arguments
 variant of the ABI for the ARM Architecture (as selected with
 @code{-mfloat-abi=hard}).
 
+@item arm_softfloat
+ARM target uses the soft-float ABI with no floating-point instructions
+used whatsoever (as selected with @code{-mfloat-abi=soft}).
+
 @item arm_hard_vfp_ok
 ARM target supports @code{-mfpu=vfp -mfloat-abi=hard}.
 Some multilibs may be incompatible with these options.
index 89375610f633e9c2ecf53c497ac4ebe58bb0900a..a63fa4a35fc9ae24b3dd2d3439be6e6eced68204 100644 (file)
@@ -1,3 +1,10 @@
+2018-01-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       * lib/target-supports.exp (check_effective_target_arm_softfloat):
+       New procedure.
+       * gcc.target/arm/copysign_softfloat_1.c: Allow running everywhere.
+       Adjust scan-assembler checks for soft-float.
+
 2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
        PR target/83946
index d79d014e27cf445cd741504c6b256a3a51ace6cd..fdbeeadc01e1c9b9a7810a8ff8b23c58f6c429a5 100644 (file)
@@ -1,8 +1,8 @@
 /* { dg-do run } */
 /* { dg-require-effective-target arm_thumb2_ok } */
-/* { dg-require-effective-target arm_soft_ok } */
-/* { dg-skip-if "skip override" { *-*-* } { "-mfloat-abi=softfp" "-mfloat-abi=hard" } { "" } } */
-/* { dg-options "-O2 -mfloat-abi=soft --save-temps" } */
+/* { dg-add-options arm_arch_v6t2 } */
+/* { dg-additional-options "-O2 --save-temps" } */
+
 extern void abort (void);
 
 #define N 16
@@ -42,8 +42,8 @@ main (int argc, char **argv)
 {
   int index = 0;
 
-/* { dg-final { scan-assembler-times "bfi" 2 } } */
-/* { dg-final { scan-assembler-times "lsr" 1 } } */
+/* { dg-final { scan-assembler-times "bfi" 2 { target arm_softfloat } } } */
+/* { dg-final { scan-assembler-times "lsr" 1 { target arm_softfloat } } } */
   for (index; index < N; index++)
     {
       if (__builtin_copysignf (a_f[index], b_f[index]) != c_f[index])
index b4b6f32bf2605c3dd2f47d026212362fa4280b6e..720914b0c4c6173d989fa1c8f3362ff5a22c3e71 100644 (file)
@@ -4885,6 +4885,19 @@ proc check_effective_target_arm_hf_eabi { } {
     }]
 }
 
+# Return 1 if this is an ARM target that uses the soft float ABI
+# with no floating-point instructions at all (e.g. -mfloat-abi=soft).
+
+proc check_effective_target_arm_softfloat { } {
+    return [check_no_compiler_messages arm_softfloat object {
+       #if !defined(__SOFTFP__)
+       #error not soft-float EABI
+       #else
+       int dummy;
+       #endif
+    }]
+}
+
 # Return 1 if this is an ARM target supporting -mcpu=iwmmxt.
 # Some multilibs may be incompatible with this option.