[TESTSUITE] (checked in) add debugging output to some decimal float tests
Janis Johnson
janis187@us.ibm.com
Tue May 22 18:13:00 GMT 2007
While mucking around with decimal float support I ran into bugs in my
new code and modified existing tests to report individual errors when
DBG is defined. These changes might be useful to others so I've
checked them in to mainline. The patch also fixes a couple of minor
test typos.
2007-05-22 Janis Johnson <janis187@us.ibm.com>
* gcc.dg/dfp/func-array.c: Support -DDBG to report individual failures.
* gcc.dg/dfp/func-struct.c: Ditto.
* gcc.dg/dfp/operator-assignment.c: Ditto.
* gcc.dg/dfp/convert-bfp.c: Ditto.
* gcc.dg/dfp/convert-int.c: Ditto.
* gcc.dg/dfp/convert-int-max.c: Ditto.
* gcc.dg/dfp/func-scalar.c: Ditto.
* gcc.dg/dfp/cast.c: Ditto.
* gcc.dg/dfp/func-mixed.c: Support -DDBG to report individual
failures, and fix a typo in return type of arg1_128.
* gcc.dg/dfp/convert-dfp.c: Support -DDBG to report individual
failures, and fix a typo in a constant suffix.
* gcc.dg/dfp/func-vararg-dfp.c: Return zero at the end.
* gcc.dg/dfp/convert-complex.c: With -DDBG, abort for failures.
Index: gcc/testsuite/gcc.dg/dfp/func-array.c
===================================================================
--- gcc/testsuite/gcc.dg/dfp/func-array.c (revision 124921)
+++ gcc/testsuite/gcc.dg/dfp/func-array.c (working copy)
@@ -4,7 +4,17 @@
Test passing array elements involving decimal floating point types. */
extern void abort (void);
+static int failcnt;
+/* Support compiling the test to report individual failures; default is
+ to abort as soon as a check fails. */
+#ifdef DBG
+#include <stdio.h>
+#define FAILURE { printf ("failed at line %d\n", __LINE__); failcnt++; }
+#else
+#define FAILURE abort ();
+#endif
+
/* A handful of functions that return the Nth _Decimal32 argument of
an incoming array. */
@@ -132,28 +142,31 @@
_Decimal128 d128[] = { 0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl };
/* _Decimal32 variants. */
- if (arg0_32 (d32) != 0.0df) abort ();
- if (arg1_32 (d32) != 1.0df) abort ();
- if (arg2_32 (d32) != 2.0df) abort ();
- if (arg3_32 (d32) != 3.0df) abort ();
- if (arg4_32 (d32) != 4.0df) abort ();
- if (arg5_32 (d32) != 5.0df) abort ();
+ if (arg0_32 (d32) != 0.0df) FAILURE
+ if (arg1_32 (d32) != 1.0df) FAILURE
+ if (arg2_32 (d32) != 2.0df) FAILURE
+ if (arg3_32 (d32) != 3.0df) FAILURE
+ if (arg4_32 (d32) != 4.0df) FAILURE
+ if (arg5_32 (d32) != 5.0df) FAILURE
/* _Decimal64 variants. */
- if (arg0_64 (d64) != 0.0dd) abort ();
- if (arg1_64 (d64) != 1.0dd) abort ();
- if (arg2_64 (d64) != 2.0dd) abort ();
- if (arg3_64 (d64) != 3.0dd) abort ();
- if (arg4_64 (d64) != 4.0dd) abort ();
- if (arg5_64 (d64) != 5.0dd) abort ();
+ if (arg0_64 (d64) != 0.0dd) FAILURE
+ if (arg1_64 (d64) != 1.0dd) FAILURE
+ if (arg2_64 (d64) != 2.0dd) FAILURE
+ if (arg3_64 (d64) != 3.0dd) FAILURE
+ if (arg4_64 (d64) != 4.0dd) FAILURE
+ if (arg5_64 (d64) != 5.0dd) FAILURE
/* _Decimal128 variants. */
- if (arg0_128 (d128) != 0.0dl) abort ();
- if (arg1_128 (d128) != 1.0dl) abort ();
- if (arg2_128 (d128) != 2.0dl) abort ();
- if (arg3_128 (d128) != 3.0dl) abort ();
- if (arg4_128 (d128) != 4.0dl) abort ();
- if (arg5_128 (d128) != 5.0dl) abort ();
+ if (arg0_128 (d128) != 0.0dl) FAILURE
+ if (arg1_128 (d128) != 1.0dl) FAILURE
+ if (arg2_128 (d128) != 2.0dl) FAILURE
+ if (arg3_128 (d128) != 3.0dl) FAILURE
+ if (arg4_128 (d128) != 4.0dl) FAILURE
+ if (arg5_128 (d128) != 5.0dl) FAILURE
+ if (failcnt != 0)
+ abort ();
+
return 0;
}
Index: gcc/testsuite/gcc.dg/dfp/func-struct.c
===================================================================
--- gcc/testsuite/gcc.dg/dfp/func-struct.c (revision 124921)
+++ gcc/testsuite/gcc.dg/dfp/func-struct.c (working copy)
@@ -5,7 +5,17 @@
point types. */
extern void abort (void);
+static int failcnt;
+/* Support compiling the test to report individual failures; default is
+ to abort as soon as a check fails. */
+#ifdef DBG
+#include <stdio.h>
+#define FAILURE { printf ("failed at line %d\n", __LINE__); failcnt++; }
+#else
+#define FAILURE abort ();
+#endif
+
struct example
{
_Decimal128 d128;
@@ -79,17 +89,20 @@
int
main ()
{
- if (d32_field (nums) != 3.0df) abort ();
- if (d64_field (nums) != 2.0dd) abort ();
- if (d128_field (nums) != 1.0dl) abort ();
- if (dummy1_field (nums) != 'a') abort ();
- if (dummy2_field (nums) != 'b') abort ();
+ if (d32_field (nums) != 3.0df) FAILURE
+ if (d64_field (nums) != 2.0dd) FAILURE
+ if (d128_field (nums) != 1.0dl) FAILURE
+ if (dummy1_field (nums) != 'a') FAILURE
+ if (dummy2_field (nums) != 'b') FAILURE
- if (ptr_d32_field (&nums) != 3.0df) abort ();
- if (ptr_d64_field (&nums) != 2.0dd) abort ();
- if (ptr_d128_field (&nums) != 1.0dl) abort ();
- if (ptr_dummy1_field (&nums) != 'a') abort ();
- if (ptr_dummy2_field (&nums) != 'b') abort ();
+ if (ptr_d32_field (&nums) != 3.0df) FAILURE
+ if (ptr_d64_field (&nums) != 2.0dd) FAILURE
+ if (ptr_d128_field (&nums) != 1.0dl) FAILURE
+ if (ptr_dummy1_field (&nums) != 'a') FAILURE
+ if (ptr_dummy2_field (&nums) != 'b') FAILURE
+ if (failcnt != 0)
+ abort ();
+
return 0;
}
Index: gcc/testsuite/gcc.dg/dfp/func-mixed.c
===================================================================
--- gcc/testsuite/gcc.dg/dfp/func-mixed.c (revision 124921)
+++ gcc/testsuite/gcc.dg/dfp/func-mixed.c (working copy)
@@ -5,7 +5,17 @@
point types. */
extern void abort (void);
+static int failcnt;
+/* Support compiling the test to report individual failures; default is
+ to abort as soon as a check fails. */
+#ifdef DBG
+#include <stdio.h>
+#define FAILURE { printf ("failed at line %d\n", __LINE__); failcnt++; }
+#else
+#define FAILURE abort ();
+#endif
+
/* A handful of functions that return their Nth _Decimal32
argument with mixed types in parameter list. */
@@ -106,7 +116,7 @@
{
return arg0;
}
-_Decimal32
+_Decimal128
arg1_128 (int arg0, _Decimal128 arg1, unsigned int arg2,
float arg3, double arg4, long double arg5)
{
@@ -147,28 +157,31 @@
main ()
{
/* _Decimal32 variants. */
- if (arg0_32 (0.0df, -1, 2, 3.0f, 4.0, 5.0l) != 0.0df) abort ();
- if (arg1_32 (0, 1.0df, 2, 3.0f, 4.0, 5.0l) != 1.0df) abort ();
- if (arg2_32 (0, -1, 2.0df, 3.0f, 4.0, 5.0l) != 2.0df) abort ();
- if (arg3_32 (0, -1, 2.0f, 3.0df, 4.0, 5.0l) != 3.0df) abort ();
- if (arg4_32 (0, -1, 2.0f, 3.0, 4.0df, 5.0l) != 4.0df) abort ();
- if (arg5_32 (0, -1, 2.0f, 3.0, 4.0l, 5.0df) != 5.0df) abort ();
+ if (arg0_32 (0.0df, -1, 2, 3.0f, 4.0, 5.0l) != 0.0df) FAILURE
+ if (arg1_32 (0, 1.0df, 2, 3.0f, 4.0, 5.0l) != 1.0df) FAILURE
+ if (arg2_32 (0, -1, 2.0df, 3.0f, 4.0, 5.0l) != 2.0df) FAILURE
+ if (arg3_32 (0, -1, 2.0f, 3.0df, 4.0, 5.0l) != 3.0df) FAILURE
+ if (arg4_32 (0, -1, 2.0f, 3.0, 4.0df, 5.0l) != 4.0df) FAILURE
+ if (arg5_32 (0, -1, 2.0f, 3.0, 4.0l, 5.0df) != 5.0df) FAILURE
/* _Decimal64 variants. */
- if (arg0_64 (0.0dd, -1, 2, 3.0f, 4.0, 5.0l) != 0.0dd) abort ();
- if (arg1_64 (0, 1.0dd, 2, 3.0f, 4.0, 5.0l) != 1.0dd) abort ();
- if (arg2_64 (0, -1, 2.0dd, 3.0f, 4.0, 5.0l) != 2.0dd) abort ();
- if (arg3_64 (0, -1, 2.0f, 3.0dd, 4.0, 5.0l) != 3.0dd) abort ();
- if (arg4_64 (0, -1, 2.0f, 3.0, 4.0dd, 5.0l) != 4.0dd) abort ();
- if (arg5_64 (0, -1, 2.0f, 3.0, 4.0l, 5.0dd) != 5.0dd) abort ();
+ if (arg0_64 (0.0dd, -1, 2, 3.0f, 4.0, 5.0l) != 0.0dd) FAILURE
+ if (arg1_64 (0, 1.0dd, 2, 3.0f, 4.0, 5.0l) != 1.0dd) FAILURE
+ if (arg2_64 (0, -1, 2.0dd, 3.0f, 4.0, 5.0l) != 2.0dd) FAILURE
+ if (arg3_64 (0, -1, 2.0f, 3.0dd, 4.0, 5.0l) != 3.0dd) FAILURE
+ if (arg4_64 (0, -1, 2.0f, 3.0, 4.0dd, 5.0l) != 4.0dd) FAILURE
+ if (arg5_64 (0, -1, 2.0f, 3.0, 4.0l, 5.0dd) != 5.0dd) FAILURE
/* _Decimal128 variants. */
- if (arg0_128 (0.0dl, -1, 2, 3.0f, 4.0, 5.0l) != 0.0dl) abort ();
- if (arg1_128 (0, 1.0dl, 2, 3.0f, 4.0, 5.0l) != 1.0dl) abort ();
- if (arg2_128 (0, -1, 2.0dl, 3.0f, 4.0, 5.0l) != 2.0dl) abort ();
- if (arg3_128 (0, -1, 2.0f, 3.0dl, 4.0, 5.0l) != 3.0dl) abort ();
- if (arg4_128 (0, -1, 2.0f, 3.0, 4.0dl, 5.0l) != 4.0dl) abort ();
- if (arg5_128 (0, -1, 2.0f, 3.0, 4.0l, 5.0dl) != 5.0dl) abort ();
+ if (arg0_128 (0.0dl, -1, 2, 3.0f, 4.0, 5.0l) != 0.0dl) FAILURE
+ if (arg1_128 (0, 1.0dl, 2, 3.0f, 4.0, 5.0l) != 1.0dl) FAILURE
+ if (arg2_128 (0, -1, 2.0dl, 3.0f, 4.0, 5.0l) != 2.0dl) FAILURE
+ if (arg3_128 (0, -1, 2.0f, 3.0dl, 4.0, 5.0l) != 3.0dl) FAILURE
+ if (arg4_128 (0, -1, 2.0f, 3.0, 4.0dl, 5.0l) != 4.0dl) FAILURE
+ if (arg5_128 (0, -1, 2.0f, 3.0, 4.0l, 5.0dl) != 5.0dl) FAILURE
+ if (failcnt != 0)
+ abort ();
+
return 0;
}
Index: gcc/testsuite/gcc.dg/dfp/operator-assignment.c
===================================================================
--- gcc/testsuite/gcc.dg/dfp/operator-assignment.c (revision 124921)
+++ gcc/testsuite/gcc.dg/dfp/operator-assignment.c (working copy)
@@ -6,10 +6,20 @@
float types cast to decimal float types. */
extern void abort (void);
+static int failcnt;
+/* Support compiling the test to report individual failures; default is
+ to abort as soon as a check fails. */
+#ifdef DBG
+#include <stdio.h>
+#define FAILURE { printf ("failed at line %d\n", __LINE__); failcnt++; }
+#else
+#define FAILURE abort ();
+#endif
+
#define OPERATE(OPRD1,OPRT,OPRD2,RLT) \
if (( OPRD1 OPRT OPRD2 )!= RLT) \
- abort ();
+ FAILURE
#define DECIMAL_COMPOUND_ASSIGNMENT(TYPE, OPRD) \
{ \
@@ -54,5 +64,8 @@
DECIMAL_COMPOUND_ASSIGNMENT(64, d64);
DECIMAL_COMPOUND_ASSIGNMENT(128, d128);
+ if (failcnt != 0)
+ abort ();
+
return 0;
}
Index: gcc/testsuite/gcc.dg/dfp/convert-bfp.c
===================================================================
--- gcc/testsuite/gcc.dg/dfp/convert-bfp.c (revision 124921)
+++ gcc/testsuite/gcc.dg/dfp/convert-bfp.c (working copy)
@@ -7,6 +7,18 @@
/* Long double isn't supported yet at runtime, so disable those checks. */
#define SKIP_LONG_DOUBLE
+extern void abort (void);
+static int failcnt;
+
+/* Support compiling the test to report individual failures; default is
+ to abort as soon as a check fails. */
+#ifdef DBG
+#include <stdio.h>
+#define FAILURE { printf ("failed at line %d\n", __LINE__); failcnt++; }
+#else
+#define FAILURE abort ();
+#endif
+
volatile _Decimal32 d32;
volatile _Decimal64 d64;
volatile _Decimal128 d128;
@@ -16,8 +28,6 @@
volatile long double tf;
#endif
-extern void abort (void);
-
int
main ()
{
@@ -27,101 +37,104 @@
d32 = 2.0df;
sf = d32;
if (sf != 2.0f)
- abort ();
+ FAILURE
df = d32;
if (df != 2.0)
- abort ();
+ FAILURE
#ifndef SKIP_LONG_DOUBLE
tf = d32;
if (tf != 2.0l)
- abort ();
+ FAILURE
#endif
/* Conversions from _Decimal64. */
d64 = -7.0dd;
sf = d64;
if (sf != -7.0f)
- abort ();
+ FAILURE
df = d64;
if (df != -7.0)
- abort ();
+ FAILURE
#ifndef SKIP_LONG_DOUBLE
tf = d64;
if (tf != -7.0l)
- abort ();
+ FAILURE
#endif
/* Conversions from _Decimal128. */
d128 = 30.0dl;
sf = d128;
if (sf != 30.0f)
- abort ();
+ FAILURE
df = d128;
if (df != 30.0)
- abort ();
+ FAILURE
df = d128;
if (df != 30.0l)
- abort ();
+ FAILURE
/* Conversions from binary float to decimal float. */
sf = 30.0f;
d32 = sf;
if (d32 != 30.0df)
- abort ();
+ FAILURE
d64 = sf;
if (d64 != 30.0dd)
- abort ();
+ FAILURE
df = -2.0;
d32 = df;
if (d32 != -2.0df)
- abort ();
+ FAILURE
d64 = df;
if (d64 != -2.0dd)
- abort ();
+ FAILURE
d128 = df;
if (d128 != -2.0dl)
- abort ();
+ FAILURE
sf = 30.0f;
d128 = sf;
if (d128 != 30.0dl)
- abort ();
+ FAILURE
#ifndef SKIP_LONG_DOUBLE
tf = -22.0l;
d32 = tf;
if (d32 != -22.0df)
- abort ();
+ FAILURE
d64 = tf;
if (d64 != -22.0dd)
- abort ();
+ FAILURE
d128 = tf;
if (d128 != -22.0dl)
- abort ();
+ FAILURE
#endif
/* 2**(-11) = 0.00048828125. */
d128 = 0.000488281251dl;
sf = d128;
if (sf != 0.00048828125f)
- abort ();
+ FAILURE
/* 2**(-25) = 0.298023223876953125E-7. */
d128 = 2.98023223876953125E-8dl;
df = d128;
if (df < (2.9802322387695312e-08 - 0.00000000001)
|| df > (2.9802322387695312e-08 + 0.00000000001))
+ FAILURE
+
+ if (failcnt != 0)
abort ();
return 0;
Index: gcc/testsuite/gcc.dg/dfp/convert-dfp.c
===================================================================
--- gcc/testsuite/gcc.dg/dfp/convert-dfp.c (revision 124921)
+++ gcc/testsuite/gcc.dg/dfp/convert-dfp.c (working copy)
@@ -13,7 +13,17 @@
#include <float.h>
extern void abort (void);
+static int failcnt;
+/* Support compiling the test to report individual failures; default is
+ to abort as soon as a check fails. */
+#ifdef DBG
+#include <stdio.h>
+#define FAILURE { printf ("failed at line %d\n", __LINE__); failcnt++; }
+#else
+#define FAILURE abort ();
+#endif
+
volatile _Decimal32 d32;
volatile _Decimal64 d64;
volatile _Decimal128 d128;
@@ -25,29 +35,29 @@
d32 = 123.4df;
d64 = d32;
if (d64 != 123.4dd)
- abort ();
+ FAILURE
d128 = d32;
if (d128 != 123.4dl)
- abort ();
+ FAILURE
d64 = 345.678dd;
d128 = d64;
if (d128 != 345.678dl)
- abort ();
+ FAILURE
/* Conversions to smaller types for which the value fits. */
d64 = 3456.789dd;
d32 = d64;
if (d32 != 3456.789df)
- abort ();
+ FAILURE
d128 = 123.4567dl;
d32 = d128;
- if (d32 != 123.4567dl)
- abort ();
+ if (d32 != 123.4567df)
+ FAILURE
d128 = 1234567890.123456dl;
d64 = d128;
if (d64 != 1234567890.123456dd)
- abort ();
+ FAILURE
/* Test demotion to non-representable decimal floating type. */
@@ -59,37 +69,40 @@
d64 = 9.99999949E96DD;
d32 = d64;
if (d32 != DEC32_MAX)
- abort();
+ FAILURE
/* Rounds to more than _Decimal32 can handle. */
d64 = 9.9999995E96DD;
d32 = d64;
if (d32 != __builtin_infd32())
- abort();
+ FAILURE
/* Rounds to what _Decimal32 can handle. */
d128 = 9.99999949E96DD;
d32 = d128;
if (d32 != DEC32_MAX)
- abort();
+ FAILURE
/* Rounds to more than _Decimal32 can handle. */
d128= 9.9999995E96DD;
d32 = d128;
if (d32 != __builtin_infd32())
- abort();
+ FAILURE
/* Rounds to what _Decimal64 can handle. */
d128 = 9.99999999999999949E384DL;
d64 = d128;
if (d64 != DEC64_MAX)
- abort();
+ FAILURE
/* Rounds to more than _Decimal64 can handle. */
d128 = 9.9999999999999995E384DL;
d64 = d128;
if (d64 != __builtin_infd64())
- abort();
+ FAILURE
+ if (failcnt != 0)
+ abort ();
+
return 0;
}
Index: gcc/testsuite/gcc.dg/dfp/convert-int-max.c
===================================================================
--- gcc/testsuite/gcc.dg/dfp/convert-int-max.c (revision 124921)
+++ gcc/testsuite/gcc.dg/dfp/convert-int-max.c (working copy)
@@ -7,7 +7,15 @@
64-bit long long (there's a check for that below). */
extern void abort (void);
+int failcnt;
+#ifdef DBG
+extern int printf (const char *, ...);
+#define FAILURE { printf ("failed at line %d\n", __LINE__); failcnt++; }
+#else
+#define FAILURE abort ();
+#endif
+
volatile _Decimal32 d32;
volatile _Decimal64 d64;
volatile _Decimal128 d128;
@@ -24,112 +32,112 @@
d32 = 2147483.E3DF;
si = d32;
if (si != 2147483000)
- abort ();
+ FAILURE
d32 = -2147483.E3DF;
si = d32;
if (si != -2147483000)
- abort ();
+ FAILURE
/* _Decimal32 to unsigned int. */
d32 = 4.294967E9DF;
ui = d32;
if (ui != 4294967000U)
- abort ();
+ FAILURE
/* _Decimal32 to long long. */
d32 = 922.3372E16DF;
sll = d32;
if (sll != 9223372000000000000LL)
- abort ();
+ FAILURE
d32 = -92233.72E14DF;
sll = d32;
if (sll != -9223372000000000000LL)
- abort ();
+ FAILURE
/* _Decimal32 to unsigned long long. */
- d32 = 0.1844674E20DF;
+ d32 = .1844674E20DF;
ull = d32;
if (ull != 18446740000000000000ULL)
- abort ();
+ FAILURE
/* _Decimal64 to int. */
d64 = 2.147483647E9DD;
si = d64;
if (si != 2147483647)
- abort ();
+ FAILURE
d64 = -2147483648.DD;
si = d64;
if (si != -2147483648)
- abort ();
+ FAILURE
/* _Decimal64 to unsigned int. */
d64 = 42949.67295E5DD;
ui = d64;
if (ui != 4294967295)
- abort ();
+ FAILURE
/* _Decimal64 to long long. */
d64 = 9.223372036854775E18DD;
sll = d64;
if (sll != 9223372036854775000LL)
- abort ();
+ FAILURE
d64 = -92233720.36854775E11DD;
sll = d64;
if (sll != -9223372036854775000LL)
- abort ();
+ FAILURE
/* _Decimal64 to unsigned long long. */
d64 = 1844674407370955.E4DD;
ull = d64;
if (ull != 18446744073709550000ULL)
- abort ();
+ FAILURE
/* _Decimal128 to int. */
d128 = 2.147483647E9DL;
si = d128;
if (si != 2147483647)
- abort ();
+ FAILURE
d128 = -2147483648.DL;
si = d128;
if (si != -2147483648)
- abort ();
+ FAILURE
/* _Decimal128 to unsigned int. */
d128 = 4294.967295E6DL;
ui = d128;
if (ui != 4294967295)
- abort ();
+ FAILURE
/* _Decimal128 to long long. */
d128 = 9223372036854775807.DL;
sll = d128;
if (sll != 9223372036854775807LL)
- abort ();
+ FAILURE
d128 = -9.223372036854775808E19DL;
sll = d128;
if (sll != -9223372036854775807LL - 1LL)
- abort ();
+ FAILURE
/* _Decimal128 to unsigned long long. */
d128 = 18446744073709551615.DL;
ull = d128;
if (ull != 18446744073709551615ULL)
- abort ();
+ FAILURE
}
int
@@ -141,5 +149,8 @@
return 0;
doit ();
+
+ if (failcnt != 0)
+ abort ();
return 0;
}
Index: gcc/testsuite/gcc.dg/dfp/func-scalar.c
===================================================================
--- gcc/testsuite/gcc.dg/dfp/func-scalar.c (revision 124921)
+++ gcc/testsuite/gcc.dg/dfp/func-scalar.c (working copy)
@@ -5,7 +5,17 @@
point types. */
extern void abort (void);
+static int failcnt;
+/* Support compiling the test to report individual failures; default is
+ to abort as soon as a check fails. */
+#ifdef DBG
+#include <stdio.h>
+#define FAILURE { printf ("failed at line %d\n", __LINE__); failcnt++; }
+#else
+#define FAILURE abort ();
+#endif
+
/* A handful of functions that return their Nth _Decimal32
argument. */
@@ -150,44 +160,47 @@
{
/* _Decimal32 variants. */
if (arg0_32 (0.0df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df) != 0.0df)
- abort ();
+ FAILURE
if (arg1_32 (0.0df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df) != 1.0df)
- abort ();
+ FAILURE
if (arg2_32 (0.0df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df) != 2.0df)
- abort ();
+ FAILURE
if (arg3_32 (0.0df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df) != 3.0df)
- abort ();
+ FAILURE
if (arg4_32 (0.0df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df) != 4.0df)
- abort ();
+ FAILURE
if (arg5_32 (0.0df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df) != 5.0df)
- abort ();
+ FAILURE
/* _Decimal64 variants. */
if (arg0_64 (0.0dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd) != 0.0dd)
- abort ();
+ FAILURE
if (arg1_64 (0.0dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd) != 1.0dd)
- abort ();
+ FAILURE
if (arg2_64 (0.0dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd) != 2.0dd)
- abort ();
+ FAILURE
if (arg3_64 (0.0dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd) != 3.0dd)
- abort ();
+ FAILURE
if (arg4_64 (0.0dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd) != 4.0dd)
- abort ();
+ FAILURE
if (arg5_64 (0.0dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd) != 5.0dd)
- abort ();
+ FAILURE
/* _Decimal128 variants. */
if (arg0_128 (0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl) != 0.0dl)
- abort ();
+ FAILURE
if (arg1_128 (0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl) != 1.0dl)
- abort ();
+ FAILURE
if (arg2_128 (0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl) != 2.0dl)
- abort ();
+ FAILURE
if (arg3_128 (0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl) != 3.0dl)
- abort ();
+ FAILURE
if (arg4_128 (0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl) != 4.0dl)
- abort ();
+ FAILURE
if (arg5_128 (0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl) != 5.0dl)
+ FAILURE
+
+ if (failcnt != 0)
abort ();
return 0;
Index: gcc/testsuite/gcc.dg/dfp/convert-int.c
===================================================================
--- gcc/testsuite/gcc.dg/dfp/convert-int.c (revision 124921)
+++ gcc/testsuite/gcc.dg/dfp/convert-int.c (working copy)
@@ -4,7 +4,15 @@
C99 6.3.1.4(1a) New. */
extern void abort (void);
+int failcnt;
+#ifdef DBG
+extern int printf (const char *, ...);
+#define FAILURE { printf ("failed at line %d\n", __LINE__); failcnt++; }
+#else
+#define FAILURE abort ();
+#endif
+
_Decimal32 d32;
_Decimal64 d64;
_Decimal128 d128;
@@ -67,33 +75,33 @@
ui = d32;
if (ui != 456U)
- abort ();
+ FAILURE
ul = d32;
if (ul != 456UL)
- abort ();
+ FAILURE
ull = d32;
if (ull != 456ULL)
- abort ();
+ FAILURE
ui = d64;
if (ui != 23U)
- abort ();
+ FAILURE
ul = d64;
if (ul != 23UL)
- abort ();
+ FAILURE
ull = d64;
if (ull != 23ULL)
- abort ();
+ FAILURE
ui = d128;
if (ui != 1234U)
- abort ();
+ FAILURE
ul = d128;
if (ul != 1234UL)
- abort ();
+ FAILURE
ull = d128;
if (ull != 1234ULL)
- abort ();
+ FAILURE
/* Decimal float to signed integer. */
@@ -102,91 +110,94 @@
b = d32;
if (!b)
- abort ();
+ FAILURE
b = d64;
if (!b)
- abort ();
+ FAILURE
b = d128;
if (!b)
- abort ();
+ FAILURE
/* Unsigned integer to decimal float. */
init_unsigned_int ();
d32 = ui;
if (d32 != 987.0df)
- abort ();
+ FAILURE
d32 = ul;
if (d32 != 345678.0df)
- abort ();
+ FAILURE
d32 = ull;
if (d32 != 1234567.df)
- abort ();
+ FAILURE
d64 = ui;
if (d64 != 987.0dd)
- abort ();
+ FAILURE
d64 = ul;
if (d64 != 345678.0dd)
- abort ();
+ FAILURE
d64 = ull;
if (d64 != 1234567.dd)
- abort ();
+ FAILURE
d128 = ui;
if (d128 != 987.0dl)
- abort ();
+ FAILURE
d128 = ul;
if (d128 != 345678.0dl)
- abort ();
+ FAILURE
d128 = ull;
if (d128 != 1234567.dl)
- abort ();
+ FAILURE
/* Signed integer to decimal float. */
init_signed_int ();
d32 = si;
if (d32 != -987.0df)
- abort ();
+ FAILURE
d32 = sl;
if (d32 != -345678.0df)
- abort ();
+ FAILURE
d32 = sll;
if (d32 != -1234567.df)
- abort ();
+ FAILURE
d64 = si;
if (d64 != -987.0dd)
- abort ();
+ FAILURE
d64 = sl;
if (d64 != -345678.0dd)
- abort ();
+ FAILURE
d64 = sll;
if (d64 != -1234567.dd)
- abort ();
+ FAILURE
d128 = si;
if (d128 != -987.0dl)
- abort ();
+ FAILURE
d128 = sl;
if (d128 != -345678.0dl)
- abort ();
+ FAILURE
d128 = sll;
if (d128 != -1234567.dl)
- abort ();
+ FAILURE
/* _Bool to decimal float. */
init_dfp_3 ();
b = d32;
if (b)
- abort ();
+ FAILURE
b = d64;
if (b)
- abort ();
+ FAILURE
b = d128;
if (b)
+ FAILURE
+
+ if (failcnt != 0)
abort ();
return 0;
Index: gcc/testsuite/gcc.dg/dfp/func-vararg-dfp.c
===================================================================
--- gcc/testsuite/gcc.dg/dfp/func-vararg-dfp.c (revision 124921)
+++ gcc/testsuite/gcc.dg/dfp/func-vararg-dfp.c (working copy)
@@ -106,4 +106,5 @@
if (failcnt != 0)
abort ();
+ return 0;
}
Index: gcc/testsuite/gcc.dg/dfp/convert-complex.c
===================================================================
--- gcc/testsuite/gcc.dg/dfp/convert-complex.c (revision 124921)
+++ gcc/testsuite/gcc.dg/dfp/convert-complex.c (working copy)
@@ -5,7 +5,7 @@
extern void abort(void);
static int failcnt;
-
+
/* Support compiling the test to report individual failures; default is
to abort as soon as a check fails. */
#ifdef DBG
@@ -124,5 +124,8 @@
if (d128 != 0.0625DL)
FAILURE
+ if (failcnt != 0)
+ abort ();
+
return 0;
}
Index: gcc/testsuite/gcc.dg/dfp/cast.c
===================================================================
--- gcc/testsuite/gcc.dg/dfp/cast.c (revision 124921)
+++ gcc/testsuite/gcc.dg/dfp/cast.c (working copy)
@@ -4,6 +4,14 @@
Test valid casts involving decimal float. */
extern void abort (void);
+int failcnt;
+
+#ifdef DBG
+extern int printf (const char *, ...);
+#define FAILURE { printf ("failed at line %d\n", __LINE__); failcnt++; }
+#else
+#define FAILURE abort ();
+#endif
_Decimal32 d32;
_Decimal64 d64;
@@ -21,19 +29,19 @@
d128 = 1.2dl;
if (d32 != (_Decimal32) d64)
- abort ();
+ FAILURE
if (d32 != (_Decimal32) d128)
- abort ();
+ FAILURE
if (d64 != (_Decimal64) d32)
- abort ();
+ FAILURE
if (d64 != (_Decimal64) d128)
- abort ();
+ FAILURE
if (d128 != (_Decimal128) d32)
- abort ();
+ FAILURE
if (d128 != (_Decimal128) d64)
- abort ();
+ FAILURE
/* Casts between generic and decimal floating point types. Use a
value that we can assume can be represented exactly in all
@@ -45,32 +53,35 @@
/* To generic floating types. */
if ((float) d32 != 2.0f)
- abort ();
+ FAILURE
if ((double) d32 != 2.0l)
- abort ();
+ FAILURE
if ((float) d64 != 2.0f)
- abort ();
+ FAILURE
if ((double) d64 != 2.0l)
- abort ();
+ FAILURE
if ((float) d128 != 2.0f)
- abort ();
+ FAILURE
if ((double) d128 != 2.0l)
- abort ();
+ FAILURE
/* float to decimal floating types. */
if (d32 != (_Decimal32) f)
- abort ();
+ FAILURE
if (d64 != (_Decimal64) f)
- abort ();
+ FAILURE
if (d128 != (_Decimal128) f)
- abort ();
+ FAILURE
/* double to decimal floating types. */
if (d32 != (_Decimal32) d)
- abort ();
+ FAILURE
if (d64 != (_Decimal64) d)
- abort ();
+ FAILURE
if (d128 != (_Decimal128) d)
+ FAILURE
+
+ if (failcnt != 0)
abort ();
return 0;
More information about the Gcc-patches
mailing list