OSDN Git Service

fixincludes:
authorghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 18 Jul 2007 20:22:32 +0000 (20:22 +0000)
committerghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 18 Jul 2007 20:22:32 +0000 (20:22 +0000)
PR target/32641

* inclhack.def (solaris_math_4, solaris_math_5, solaris_math_6,
solaris_math_7): Constify and make FP exception-safe.
* tests/base/iso/math_c99.h: Update.

* fixincl.x: Regenerate.

gcc/testsuite:
* gcc.dg/c99-math-double-1.c: Mark test variables as volatile.
Test negative numbers also.
* gcc.dg/c99-math-float-1.c: Likewise.
* gcc.dg/c99-math-long-double-1.c: Likewise.
* gcc.dg/c99-math.h: Check for FP exceptions.  Update for negative
test inputs.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@126730 138bc75d-0d04-0410-961f-82ee72b054a4

fixincludes/ChangeLog
fixincludes/fixincl.x
fixincludes/inclhack.def
fixincludes/tests/base/iso/math_c99.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/c99-math-double-1.c
gcc/testsuite/gcc.dg/c99-math-float-1.c
gcc/testsuite/gcc.dg/c99-math-long-double-1.c
gcc/testsuite/gcc.dg/c99-math.h

index 526e003..eb1e719 100644 (file)
@@ -1,3 +1,13 @@
+2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       PR target/32641
+
+       * inclhack.def (solaris_math_4, solaris_math_5, solaris_math_6,
+       solaris_math_7): Constify and make FP exception-safe.
+       * tests/base/iso/math_c99.h: Update.
+
+       * fixincl.x: Regenerate.
+
 2007-07-05  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
 
        PR libgcj/28190
index f6288d2..41818d5 100644 (file)
@@ -2,11 +2,11 @@
  * 
  * DO NOT EDIT THIS FILE   (fixincl.x)
  * 
- * It has been AutoGen-ed  Friday June 29, 2007 at 06:59:26 PM MEST
+ * It has been AutoGen-ed  Saturday July  7, 2007 at 11:23:30 PM EDT
  * From the definitions    inclhack.def
  * and the template file   fixincl
  */
-/* DO NOT SVN-MERGE THIS FILE, EITHER Fri Jun 29 18:59:26 MEST 2007
+/* DO NOT SVN-MERGE THIS FILE, EITHER Sat Jul  7 23:23:30 EDT 2007
  *
  * You must regenerate it.  Use the ./genfixes script.
  *
@@ -5629,7 +5629,7 @@ static tTestDesc aSolaris_Math_4Tests[] = {
 static const char* apzSolaris_Math_4Patch[] = {
     "format",
     "#define\tfpclassify(x) \\\n\
-  __extension__ ({ __typeof(x) __x_fp = (x); \\\n\
+  __extension__ ({ const __typeof(x) __x_fp = (x); \\\n\
 \t\t   isnan(__x_fp) \\\n\
 \t\t     ? FP_NAN \\\n\
 \t\t     : isinf(__x_fp) \\\n\
@@ -5682,8 +5682,12 @@ static tTestDesc aSolaris_Math_5Tests[] = {
 static const char* apzSolaris_Math_5Patch[] = {
     "format",
     "#define\tisfinite(x) \\\n\
-  __extension__ ({ __typeof (x) __x_f = (x); \\\n\
-\t\t   __builtin_expect(!isnan(__x_f - __x_f), 1); })",
+  __extension__ ({ const __typeof (x) __x_f = (x); \\\n\
+\t\t    __builtin_expect(sizeof(__x_f) == sizeof(float) \\\n\
+\t\t\t  ? islessequal(__builtin_fabsf(__x_f),__FLT_MAX__) \\\n\
+\t\t\t  : sizeof(__x_f) == sizeof(long double) \\\n\
+\t\t\t    ? islessequal(__builtin_fabsl(__x_f),__LDBL_MAX__) \\\n\
+\t\t\t    : islessequal(__builtin_fabs(__x_f),__DBL_MAX__), 1); })",
     "^#define[ \t]+isfinite\\(x\\)[ \t]+__builtin_isfinite\\(x\\)",
     (char*)NULL };
 
@@ -5727,8 +5731,12 @@ static tTestDesc aSolaris_Math_6Tests[] = {
 static const char* apzSolaris_Math_6Patch[] = {
     "format",
     "#define\tisinf(x) \\\n\
-  __extension__ ({ __typeof (x) __x_i = (x); \\\n\
-\t\t   __builtin_expect(!isnan(__x_i) && !isfinite(__x_i), 0); })",
+  __extension__ ({ const __typeof (x) __x_i = (x); \\\n\
+\t\t    __builtin_expect(sizeof(__x_i) == sizeof(float) \\\n\
+\t\t\t  ? isgreater(__builtin_fabsf(__x_i),__FLT_MAX__) \\\n\
+\t\t\t  : sizeof(__x_i) == sizeof(long double) \\\n\
+\t\t\t    ? isgreater(__builtin_fabsl(__x_i),__LDBL_MAX__) \\\n\
+\t\t\t    : isgreater(__builtin_fabs(__x_i),__DBL_MAX__), 0); })",
     "^#define[ \t]+isinf\\(x\\)[ \t]+__builtin_isinf\\(x\\)",
     (char*)NULL };
 
@@ -5772,14 +5780,13 @@ static tTestDesc aSolaris_Math_7Tests[] = {
 static const char* apzSolaris_Math_7Patch[] = {
     "format",
     "#define\tisnormal(x) \\\n\
-  __extension__ ({ __typeof(x) __x_n = (x); \\\n\
-\t\t   if (__x_n < 0.0) __x_n = -__x_n; \\\n\
+  __extension__ ({ const __typeof(x) __x_n = (x); \\\n\
 \t\t   __builtin_expect(isfinite(__x_n) \\\n\
 \t\t\t\t    && (sizeof(__x_n) == sizeof(float) \\\n\
-\t\t\t\t\t  ? __x_n >= __FLT_MIN__ \\\n\
+\t\t\t\t\t  ? isgreaterequal(__builtin_fabsf(__x_n),__FLT_MIN__) \\\n\
 \t\t\t\t\t  : sizeof(__x_n) == sizeof(long double) \\\n\
-\t\t\t\t\t    ? __x_n >= __LDBL_MIN__ \\\n\
-\t\t\t\t\t    : __x_n >= __DBL_MIN__), 1); })",
+\t\t\t\t\t    ? isgreaterequal(__builtin_fabsl(__x_n),__LDBL_MIN__) \\\n\
+\t\t\t\t\t    : isgreaterequal(__builtin_fabs(__x_n),__DBL_MIN__)), 1); })",
     "^#define[ \t]+isnormal\\(x\\)[ \t]+__builtin_isnormal\\(x\\)",
     (char*)NULL };
 
index f7f9888..fbc1b2a 100644 (file)
@@ -3088,7 +3088,7 @@ fix = {
     files = iso/math_c99.h;
     c_fix = format;
     c_fix_arg = "#define\tfpclassify(x) \\\n"
-                "  __extension__ ({ __typeof(x) __x_fp = (x); \\\n"
+                "  __extension__ ({ const __typeof(x) __x_fp = (x); \\\n"
                 "\t\t   isnan(__x_fp) \\\n"
                 "\t\t     ? FP_NAN \\\n"
                 "\t\t     : isinf(__x_fp) \\\n"
@@ -3112,8 +3112,12 @@ fix = {
     files = iso/math_c99.h;
     c_fix = format;
     c_fix_arg = "#define\tisfinite(x) \\\n"
-                "  __extension__ ({ __typeof (x) __x_f = (x); \\\n"
-                "\t\t   __builtin_expect(!isnan(__x_f - __x_f), 1); })";
+                "  __extension__ ({ const __typeof (x) __x_f = (x); \\\n"
+                "\t\t    __builtin_expect(sizeof(__x_f) == sizeof(float) \\\n"
+                "\t\t\t  ? islessequal(__builtin_fabsf(__x_f),__FLT_MAX__) \\\n"
+                "\t\t\t  : sizeof(__x_f) == sizeof(long double) \\\n"
+                "\t\t\t    ? islessequal(__builtin_fabsl(__x_f),__LDBL_MAX__) \\\n"
+                "\t\t\t    : islessequal(__builtin_fabs(__x_f),__DBL_MAX__), 1); })";
     c_fix_arg = "^#define[ \t]+isfinite\\(x\\)[ \t]+__builtin_isfinite\\(x\\)";
     test_text =
     '#ident    "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
@@ -3128,8 +3132,12 @@ fix = {
     files = iso/math_c99.h;
     c_fix = format;
     c_fix_arg = "#define\tisinf(x) \\\n"
-                "  __extension__ ({ __typeof (x) __x_i = (x); \\\n"
-                "\t\t   __builtin_expect(!isnan(__x_i) && !isfinite(__x_i), 0); })";
+                "  __extension__ ({ const __typeof (x) __x_i = (x); \\\n"
+                "\t\t    __builtin_expect(sizeof(__x_i) == sizeof(float) \\\n"
+                "\t\t\t  ? isgreater(__builtin_fabsf(__x_i),__FLT_MAX__) \\\n"
+                "\t\t\t  : sizeof(__x_i) == sizeof(long double) \\\n"
+                "\t\t\t    ? isgreater(__builtin_fabsl(__x_i),__LDBL_MAX__) \\\n"
+                "\t\t\t    : isgreater(__builtin_fabs(__x_i),__DBL_MAX__), 0); })";
     c_fix_arg = "^#define[ \t]+isinf\\(x\\)[ \t]+__builtin_isinf\\(x\\)";
     test_text =
     '#ident    "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
@@ -3144,14 +3152,13 @@ fix = {
     files = iso/math_c99.h;
     c_fix = format;
     c_fix_arg = "#define\tisnormal(x) \\\n"
-                "  __extension__ ({ __typeof(x) __x_n = (x); \\\n"
-                "\t\t   if (__x_n < 0.0) __x_n = -__x_n; \\\n"
+                "  __extension__ ({ const __typeof(x) __x_n = (x); \\\n"
                 "\t\t   __builtin_expect(isfinite(__x_n) \\\n"
                 "\t\t\t\t    && (sizeof(__x_n) == sizeof(float) \\\n"
-                "\t\t\t\t\t  ? __x_n >= __FLT_MIN__ \\\n"
+                "\t\t\t\t\t  ? isgreaterequal(__builtin_fabsf(__x_n),__FLT_MIN__) \\\n"
                 "\t\t\t\t\t  : sizeof(__x_n) == sizeof(long double) \\\n"
-                "\t\t\t\t\t    ? __x_n >= __LDBL_MIN__ \\\n"
-                "\t\t\t\t\t    : __x_n >= __DBL_MIN__), 1); })";
+                "\t\t\t\t\t    ? isgreaterequal(__builtin_fabsl(__x_n),__LDBL_MIN__) \\\n"
+                "\t\t\t\t\t    : isgreaterequal(__builtin_fabs(__x_n),__DBL_MIN__)), 1); })";
     c_fix_arg = "^#define[ \t]+isnormal\\(x\\)[ \t]+__builtin_isnormal\\(x\\)";
     test_text =
     '#ident    "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
index 86b6c20..bc2b653 100644 (file)
@@ -38,7 +38,7 @@
 #ident "@(#)math_c99.h 1.9     04/11/01 SMI"
 #undef fpclassify
 #define        fpclassify(x) \
-  __extension__ ({ __typeof(x) __x_fp = (x); \
+  __extension__ ({ const __typeof(x) __x_fp = (x); \
                   isnan(__x_fp) \
                     ? FP_NAN \
                     : isinf(__x_fp) \
 #ident "@(#)math_c99.h 1.9     04/11/01 SMI"
 #undef isfinite
 #define        isfinite(x) \
-  __extension__ ({ __typeof (x) __x_f = (x); \
-                  __builtin_expect(!isnan(__x_f - __x_f), 1); })
+  __extension__ ({ const __typeof (x) __x_f = (x); \
+                   __builtin_expect(sizeof(__x_f) == sizeof(float) \
+                         ? islessequal(__builtin_fabsf(__x_f),__FLT_MAX__) \
+                         : sizeof(__x_f) == sizeof(long double) \
+                           ? islessequal(__builtin_fabsl(__x_f),__LDBL_MAX__) \
+                           : islessequal(__builtin_fabs(__x_f),__DBL_MAX__), 1); })
 #endif  /* SOLARIS_MATH_5_CHECK */
 
 
 #ident "@(#)math_c99.h 1.9     04/11/01 SMI"
 #undef isinf
 #define        isinf(x) \
-  __extension__ ({ __typeof (x) __x_i = (x); \
-                  __builtin_expect(!isnan(__x_i) && !isfinite(__x_i), 0); })
+  __extension__ ({ const __typeof (x) __x_i = (x); \
+                   __builtin_expect(sizeof(__x_i) == sizeof(float) \
+                         ? isgreater(__builtin_fabsf(__x_i),__FLT_MAX__) \
+                         : sizeof(__x_i) == sizeof(long double) \
+                           ? isgreater(__builtin_fabsl(__x_i),__LDBL_MAX__) \
+                           : isgreater(__builtin_fabs(__x_i),__DBL_MAX__), 0); })
 #endif  /* SOLARIS_MATH_6_CHECK */
 
 
 #ident "@(#)math_c99.h 1.9     04/11/01 SMI"
 #undef isnormal
 #define        isnormal(x) \
-  __extension__ ({ __typeof(x) __x_n = (x); \
-                  if (__x_n < 0.0) __x_n = -__x_n; \
+  __extension__ ({ const __typeof(x) __x_n = (x); \
                   __builtin_expect(isfinite(__x_n) \
                                    && (sizeof(__x_n) == sizeof(float) \
-                                         ? __x_n >= __FLT_MIN__ \
+                                         ? isgreaterequal(__builtin_fabsf(__x_n),__FLT_MIN__) \
                                          : sizeof(__x_n) == sizeof(long double) \
-                                           ? __x_n >= __LDBL_MIN__ \
-                                           : __x_n >= __DBL_MIN__), 1); })
+                                           ? isgreaterequal(__builtin_fabsl(__x_n),__LDBL_MIN__) \
+                                           : isgreaterequal(__builtin_fabs(__x_n),__DBL_MIN__)), 1); })
 #endif  /* SOLARIS_MATH_7_CHECK */
 
 
index 72564be..1cac088 100644 (file)
@@ -1,3 +1,12 @@
+2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * gcc.dg/c99-math-double-1.c: Mark test variables as volatile.
+       Test negative numbers also.
+       * gcc.dg/c99-math-float-1.c: Likewise.
+       * gcc.dg/c99-math-long-double-1.c: Likewise.
+       * gcc.dg/c99-math.h: Check for FP exceptions.  Update for negative
+       test inputs.
+
 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
        
        * lib/target-supports.exp (check_effective_target_sync_int_long):
index ef11d1b..6441a59 100644 (file)
@@ -6,14 +6,17 @@
 
 int main(void)
 {
-  double nan = NAN;
-  double inf = INFINITY;
-  double huge = HUGE_VAL;
-  double norm = __DBL_MIN__;
-  double sub = __DBL_MIN__ / 2;
-  double zero = 0.0;
+  volatile double nan = NAN;
+  volatile double inf = INFINITY;
+  volatile double huge = HUGE_VAL;
+  volatile double norm1 = __DBL_MIN__;
+  volatile double norm2 = 1;
+  volatile double norm3 = __DBL_MAX__;
+  volatile double sub = __DBL_MIN__ / 2;
+  volatile double zero = 0.0;
 
-  C99_MATH_TESTS (nan, inf, huge, norm, sub, zero)
+  C99_MATH_TESTS (nan, inf, huge, norm1, norm2, norm3, sub, zero, /*neg=*/0)
+  C99_MATH_TESTS (-nan, -inf, -huge, -norm1, -norm2, -norm3, -sub, -zero, /*neg=*/1)
 
   return 0;
 }
index f377c1a..36a7396 100644 (file)
@@ -6,14 +6,17 @@
 
 int main(void)
 {
-  float nan = NAN;
-  float inf = INFINITY;
-  float huge = HUGE_VALF;
-  float norm = __FLT_MIN__;
-  float sub = __FLT_MIN__ / 2;
-  float zero = 0.0f;
+  volatile float nan = NAN;
+  volatile float inf = INFINITY;
+  volatile float huge = HUGE_VALF;
+  volatile float norm1 = __FLT_MIN__;
+  volatile float norm2 = 1;
+  volatile float norm3 = __FLT_MAX__;
+  volatile float sub = __FLT_MIN__ / 2;
+  volatile float zero = 0.0f;
 
-  C99_MATH_TESTS (nan, inf, huge, norm, sub, zero)
+  C99_MATH_TESTS (nan, inf, huge, norm1, norm2, norm3, sub, zero, /*neg=*/0)
+  C99_MATH_TESTS (-nan, -inf, -huge, -norm1, -norm2, -norm3, -sub, -zero, /*neg=*/1)
 
   return 0;
 }
index 5f1cd30..d8146c2 100644 (file)
@@ -6,14 +6,17 @@
 
 int main(void)
 {
-  long double nan = NAN;
-  long double inf = INFINITY;
-  long double huge = HUGE_VALL;
-  long double norm = __LDBL_MIN__;
-  long double sub = __LDBL_MIN__ / 2;
-  long double zero = 0.0l;
+  volatile long double nan = NAN;
+  volatile long double inf = INFINITY;
+  volatile long double huge = HUGE_VALL;
+  volatile long double norm1 = __LDBL_MIN__;
+  volatile long double norm2 = 1;
+  volatile long double norm3 = __LDBL_MAX__;
+  volatile long double sub = __LDBL_MIN__ / 2;
+  volatile long double zero = 0.0l;
 
-  C99_MATH_TESTS (nan, inf, huge, norm, sub, zero)
+  C99_MATH_TESTS (nan, inf, huge, norm1, norm2, norm3, sub, zero, /*neg=*/0)
+  C99_MATH_TESTS (-nan, -inf, -huge, -norm1, -norm2, -norm3, -sub, -zero, /*neg=*/1)
 
   return 0;
 }
index aff81b3..81f2e6d 100644 (file)
@@ -1,9 +1,14 @@
 #include <math.h>
+#include <fenv.h>
 
 extern void abort(void);
 
-#define C99_MATH_TESTS(nan, inf, huge, norm, sub, zero)        \
+#define C99_MATH_TESTS(nan, inf, huge, norm1, norm2, norm3, sub, zero, neg) \
 {                                                      \
+  if (feclearexcept (FE_ALL_EXCEPT) != 0)              \
+    abort();                                           \
+                                                       \
+                                                       \
   if (fpclassify (nan) != FP_NAN)                      \
     abort ();                                          \
                                                        \
@@ -13,7 +18,13 @@ extern void abort(void);
   if (fpclassify (huge) != FP_INFINITE)                        \
     abort ();                                          \
                                                        \
-  if (fpclassify (norm) != FP_NORMAL)                  \
+  if (fpclassify (norm1) != FP_NORMAL)                 \
+    abort ();                                          \
+                                                       \
+  if (fpclassify (norm2) != FP_NORMAL)                 \
+    abort ();                                          \
+                                                       \
+  if (fpclassify (norm3) != FP_NORMAL)                 \
     abort ();                                          \
                                                        \
   if (fpclassify (sub) != FP_SUBNORMAL)                        \
@@ -32,7 +43,13 @@ extern void abort(void);
   if (isnan (huge))                                    \
     abort ();                                          \
                                                        \
-  if (isnan (norm))                                    \
+  if (isnan (norm1))                                   \
+    abort ();                                          \
+                                                       \
+  if (isnan (norm2))                                   \
+    abort ();                                          \
+                                                       \
+  if (isnan (norm3))                                   \
     abort ();                                          \
                                                        \
   if (isnan (sub))                                     \
@@ -51,7 +68,13 @@ extern void abort(void);
   if (!isinf (huge))                                   \
     abort ();                                          \
                                                        \
-  if (isinf (norm))                                    \
+  if (isinf (norm1))                                   \
+    abort ();                                          \
+                                                       \
+  if (isinf (norm2))                                   \
+    abort ();                                          \
+                                                       \
+  if (isinf (norm3))                                   \
     abort ();                                          \
                                                        \
   if (isinf (sub))                                     \
@@ -70,7 +93,13 @@ extern void abort(void);
   if (isfinite (huge))                                 \
     abort ();                                          \
                                                        \
-  if (!isfinite (norm))                                        \
+  if (!isfinite (norm1))                               \
+    abort ();                                          \
+                                                       \
+  if (!isfinite (norm2))                               \
+    abort ();                                          \
+                                                       \
+  if (!isfinite (norm3))                               \
     abort ();                                          \
                                                        \
   if (!isfinite (sub))                                 \
@@ -89,7 +118,13 @@ extern void abort(void);
   if (isnormal (huge))                                 \
     abort ();                                          \
                                                        \
-  if (!isnormal (norm))                                        \
+  if (!isnormal (norm1))                               \
+    abort ();                                          \
+                                                       \
+  if (!isnormal (norm2))                               \
+    abort ();                                          \
+                                                       \
+  if (!isnormal (norm3))                               \
     abort ();                                          \
                                                        \
   if (isnormal (sub))                                  \
@@ -99,28 +134,103 @@ extern void abort(void);
     abort ();                                          \
                                                        \
                                                        \
-  if (signbit (norm))                                  \
+  if (!!signbit (nan) != neg)                          \
     abort ();                                          \
                                                        \
-  if (!signbit (-(norm)))                              \
+  if (!!signbit (inf) != neg)                          \
     abort ();                                          \
                                                        \
+  if (!!signbit (huge) != neg)                         \
+    abort ();                                          \
                                                        \
-  if (!isgreater ((inf), (norm)))                      \
+  if (!!signbit (norm1) != neg)                                \
     abort ();                                          \
                                                        \
-  if (!isgreaterequal ((inf), (huge)))                 \
+  if (!!signbit (norm2) != neg)                                \
     abort ();                                          \
                                                        \
-  if (!isless ((norm), (inf)))                         \
+  if (!!signbit (norm3) != neg)                                \
     abort ();                                          \
                                                        \
-  if (!islessequal ((huge), (inf)))                    \
+  if (!!signbit (sub) != neg)                          \
     abort ();                                          \
                                                        \
-  if (!islessgreater ((inf), (norm)))                  \
+  if (!!signbit (zero) != neg)                         \
     abort ();                                          \
                                                        \
-  if (!isunordered ((nan), (norm)))                    \
+                                                       \
+  if (neg)                                             \
+  {                                                    \
+    if (!isless ((inf), (norm1)))                      \
+      abort ();                                                \
+                                                       \
+    if (!isless ((inf), (norm2)))                      \
+      abort ();                                                \
+                                                       \
+    if (!isless ((inf), (norm3)))                      \
+      abort ();                                                \
+                                                       \
+    if (!islessequal ((inf), (huge)))                  \
+      abort ();                                                \
+                                                       \
+    if (!isgreater ((norm1), (inf)))                   \
+      abort ();                                                \
+                                                       \
+    if (!isgreater ((norm2), (inf)))                   \
+      abort ();                                                \
+                                                       \
+    if (!isgreater ((norm3), (inf)))                   \
+      abort ();                                                \
+                                                       \
+    if (!isgreaterequal ((huge), (inf)))               \
+      abort ();                                                \
+  }                                                    \
+  else                                                 \
+  {                                                    \
+    if (!isgreater ((inf), (norm1)))                   \
+      abort ();                                                \
+                                                       \
+    if (!isgreater ((inf), (norm2)))                   \
+      abort ();                                                \
+                                                       \
+    if (!isgreater ((inf), (norm3)))                   \
+      abort ();                                                \
+                                                       \
+    if (!isgreaterequal ((inf), (huge)))               \
+      abort ();                                                \
+                                                       \
+    if (!isless ((norm1), (inf)))                      \
+      abort ();                                                \
+                                                       \
+    if (!isless ((norm2), (inf)))                      \
+      abort ();                                                \
+                                                       \
+    if (!isless ((norm3), (inf)))                      \
+      abort ();                                                \
+                                                       \
+    if (!islessequal ((huge), (inf)))                  \
+      abort ();                                                \
+  }                                                    \
+                                                       \
+  if (!islessgreater ((inf), (norm1)))                 \
     abort ();                                          \
+                                                       \
+  if (!islessgreater ((inf), (norm2)))                 \
+    abort ();                                          \
+                                                       \
+  if (!islessgreater ((inf), (norm3)))                 \
+    abort ();                                          \
+                                                       \
+  if (!isunordered ((nan), (norm1)))                   \
+    abort ();                                          \
+                                                       \
+  if (!isunordered ((nan), (norm2)))                   \
+    abort ();                                          \
+                                                       \
+  if (!isunordered ((nan), (norm3)))                   \
+    abort ();                                          \
+                                                       \
+                                                       \
+  if (fetestexcept (FE_ALL_EXCEPT) != 0)               \
+    abort();                                           \
 }