[PATCH]: fix testsuite failure on sh* targets in builtin-ldexp-1.c

Kaveh R. GHAZI ghazi@caip.rutgers.edu
Wed Feb 21 17:36:00 GMT 2007


Hi Kaz,

I noticed that in this posting:
http://gcc.gnu.org/ml/gcc-testresults/2007-02/msg00759.html

you're getting an error in gcc.dg/torture/builtin-ldexp-1.c which I
recently added.  Does this patch to the testcase fix it for you?  It's an
approach similar to what is used in gcc.dg/builtins-43.c (and 44, 45) for
tests using isnan() and/or isinf().  The sh target seems to imply
-ffinite-math-only which breaks any test using these functions because
the builtin folds all calls to zero in that case.

If it works, please let me know and I'll installed it.

		Thanks,
		--Kaveh


2007-02-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gcc.dg/torture/builtin-ldexp-1.c: Use -fno-finite-math-only on
	sh* targets.  Call the correct CKSGN macro.

diff -rup orig/egcc-SVN20070220/gcc/testsuite/gcc.dg/torture/builtin-ldexp-1.c egcc-SVN20070220/gcc/testsuite/gcc.dg/torture/builtin-ldexp-1.c
--- orig/egcc-SVN20070220/gcc/testsuite/gcc.dg/torture/builtin-ldexp-1.c	2007-02-18 19:29:51.000000000 -0500
+++ egcc-SVN20070220/gcc/testsuite/gcc.dg/torture/builtin-ldexp-1.c	2007-02-21 09:55:07.757773691 -0500
@@ -6,6 +6,7 @@
    Origin: Kaveh R. Ghazi,  February 17, 2007.  */

 /* { dg-do link } */
+/* { dg-options "-fno-finite-math-only" { target sh*-*-* } } */

 extern void link_error(int);

@@ -21,13 +22,13 @@ extern void link_error(int);
 /* Test that FUNC(ARG1,ARG2) == RES.  Check the sign for -0.0.  */
 #define TESTIT(FUNC,ARG1,ARG2,RES) do { \
   if (__builtin_##FUNC##f(ARG1##f,ARG2) != RES##f \
-      || CKSGN(__builtin_##FUNC##f(ARG1##f,ARG2),RES##f)) \
+      || CKSGN_F(__builtin_##FUNC##f(ARG1##f,ARG2),RES##f)) \
     link_error(__LINE__); \
   if (__builtin_##FUNC(ARG1,ARG2) != RES \
       || CKSGN(__builtin_##FUNC(ARG1,ARG2),RES)) \
     link_error(__LINE__); \
   if (__builtin_##FUNC##l(ARG1##l,ARG2) != RES##l \
-      || CKSGN(__builtin_##FUNC##l(ARG1##l,ARG2),RES##l)) \
+      || CKSGN_L(__builtin_##FUNC##l(ARG1##l,ARG2),RES##l)) \
     link_error(__LINE__); \
   } while (0)

@@ -46,13 +47,13 @@ extern void link_error(int);
    the sign as well.  */
 #define TESTIT3(FUNC,NEG,FUNCARG,ARGARG,ARG2,FUNCRES) do { \
   if (!__builtin_##FUNCRES##f(__builtin_##FUNC##f(NEG __builtin_##FUNCARG##f(ARGARG),ARG2)) \
-      || CKSGN(__builtin_##FUNC##f(NEG __builtin_##FUNCARG##f(ARGARG),ARG2), NEG __builtin_##FUNCARG##f(ARGARG))) \
+      || CKSGN_F(__builtin_##FUNC##f(NEG __builtin_##FUNCARG##f(ARGARG),ARG2), NEG __builtin_##FUNCARG##f(ARGARG))) \
     link_error(__LINE__); \
   if (!__builtin_##FUNCRES(__builtin_##FUNC(NEG __builtin_##FUNCARG(ARGARG),ARG2)) \
       || CKSGN(__builtin_##FUNC(NEG __builtin_##FUNCARG(ARGARG),ARG2), NEG __builtin_##FUNCARG(ARGARG))) \
     link_error(__LINE__); \
   if (!__builtin_##FUNCRES##l(__builtin_##FUNC##l(NEG __builtin_##FUNCARG##l(ARGARG),ARG2)) \
-      || CKSGN(__builtin_##FUNC##l(NEG __builtin_##FUNCARG##l(ARGARG),ARG2), NEG __builtin_##FUNCARG##l(ARGARG))) \
+      || CKSGN_L(__builtin_##FUNC##l(NEG __builtin_##FUNCARG##l(ARGARG),ARG2), NEG __builtin_##FUNCARG##l(ARGARG))) \
     link_error(__LINE__); \
   } while (0)



More information about the Gcc-patches mailing list