This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] rs6000, testsuite: Correct the broken_cplxf_arg test


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]