This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] rs6000, testsuite: Correct the broken_cplxf_arg test
- From: Segher Boessenkool <segher at kernel dot crashing dot org>
- To: gcc-patches at gcc dot gnu dot org
- Cc: dje dot gcc at gmail dot com, Segher Boessenkool <segher at kernel dot crashing dot org>
- Date: Sat, 11 Mar 2017 23:59:54 +0000
- Subject: [PATCH] rs6000, testsuite: Correct the broken_cplxf_arg test
- Authentication-results: sourceware.org; auth=none
check_effective_target_broken_cplxf_arg is buggy. It actually tests
if passing complex float works, not if it fails. Also, it only runs
the test for target powerpc64-linux, but we are biarch, so it should
be powerpc*-linux.
This also changes the early-out conditions to be separate, because
the big combined condition was hard to follow.
This fixes the libstdc++ tests:
Running target unix/-m64
XPASS: 26_numerics/complex/13450.cc execution test
XPASS: 26_numerics/complex/pow.cc execution test
XPASS: 26_numerics/complex/value_operations/1.cc execution test
which were the last failing libstdc++ tests on BE.
Committing to trunk.
Segher
2017-03-11 Segher Boessenkool <segher@kernel.crashing.org>
gcc/testsuite/
* lib/target-supports.exp (check_effective_target_broken_cplxf_arg):
Fix test. Make early-out condition return early. Correct comments.
---
gcc/testsuite/lib/target-supports.exp | 52 +++++++++++++++++------------------
1 file changed, 25 insertions(+), 27 deletions(-)
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 43e497b..152b7d9 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -2210,36 +2210,34 @@ proc check_effective_target_powerpc64 { } {
# GCC 3.4.0 for powerpc64-*-linux* included an ABI fix for passing
# complex float arguments. This affects gfortran tests that call cabsf
-# in libm built by an earlier compiler. Return 1 if libm uses the same
-# argument passing as the compiler under test, 0 otherwise.
-#
-# When the target name changes, replace the cached result.
+# in libm built by an earlier compiler. Return 0 if libm uses the same
+# argument passing as the compiler under test, 1 otherwise.
proc check_effective_target_broken_cplxf_arg { } {
+ # Skip the work for targets known not to be affected.
+ if { ![istarget powerpc*-*-linux*] || ![is-effective-target lp64] } {
+ return 0
+ }
+
return [check_cached_effective_target broken_cplxf_arg {
- # Skip the work for targets known not to be affected.
- if { ![istarget powerpc64-*-linux*] } {
- expr 0
- } elseif { ![is-effective-target lp64] } {
- expr 0
- } else {
- check_runtime_nocache broken_cplxf_arg {
- #include <complex.h>
- extern void abort (void);
- float fabsf (float);
- float cabsf (_Complex float);
- int main ()
- {
- _Complex float cf;
- float f;
- cf = 3 + 4.0fi;
- f = cabsf (cf);
- if (fabsf (f - 5.0) > 0.0001)
- abort ();
- return 0;
- }
- } "-lm"
- }
+ check_runtime_nocache broken_cplxf_arg {
+ #include <complex.h>
+ extern void abort (void);
+ float fabsf (float);
+ float cabsf (_Complex float);
+ int main ()
+ {
+ _Complex float cf;
+ float f;
+ cf = 3 + 4.0fi;
+ f = cabsf (cf);
+ if (fabsf (f - 5.0) > 0.0001)
+ /* Yes, it's broken. */
+ return 0;
+ /* All fine, not broken. */
+ return 1;
+ }
+ } "-lm"
}]
}
--
1.9.3