From e4a3c2f682062d253798e0c177fbd400f5f70d60 Mon Sep 17 00:00:00 2001 From: Geoff Keating Date: Thu, 23 Mar 2000 01:24:15 +0000 Subject: [PATCH] New test execute/ieee/20000320-1.c. From-SVN: r32700 --- gcc/testsuite/gcc.c-torture/ChangeLog | 4 ++ .../gcc.c-torture/execute/ieee/20000320-1.c | 67 +++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 gcc/testsuite/gcc.c-torture/execute/ieee/20000320-1.c diff --git a/gcc/testsuite/gcc.c-torture/ChangeLog b/gcc/testsuite/gcc.c-torture/ChangeLog index b1355290071..97f6eef5514 100644 --- a/gcc/testsuite/gcc.c-torture/ChangeLog +++ b/gcc/testsuite/gcc.c-torture/ChangeLog @@ -1,3 +1,7 @@ +2000-03-22 Geoff Keating + + * execute/ieee/20000320-1.c: New test for denormals. + Fri Mar 10 01:15:19 2000 Hans-Peter Nilsson * execute/divconst-2.c: Rewrite to check for standards-compliant diff --git a/gcc/testsuite/gcc.c-torture/execute/ieee/20000320-1.c b/gcc/testsuite/gcc.c-torture/execute/ieee/20000320-1.c new file mode 100644 index 00000000000..798e54256bf --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/ieee/20000320-1.c @@ -0,0 +1,67 @@ +#include +#if UINT_MAX != 4294967295u || (ULONG_LONG_MAX != 18446744073709551615ull && ULONG_MAX != 18446744073709551615ull) +int main(void) { exit (0); } +#else +#if ULONG_MAX != 18446744073709551615ull +typedef unsigned long long ull; +#else +typedef unsigned long ull; +#endif +typedef unsigned ul; + +union fl { + float f; + ul l; +} uf; +union dl { + double d; + ull ll; +} ud; + +int failed = 0; + +void c(ull d, ul f) +{ + ud.ll = d; + uf.f = (float) ud.d; + if (uf.l != f) + { + failed++; + } +} + +int main() +{ + if (sizeof (float) != sizeof (ul) + || sizeof (double) != sizeof (ull)) + exit (0); + + c(0x3690000000000000ULL, 0x00000000U); + c(0x3690000000000001ULL, 0x00000001U); + c(0x369fffffffffffffULL, 0x00000001U); + c(0x36A0000000000000ULL, 0x00000001U); + c(0x36A7ffffffffffffULL, 0x00000001U); + c(0x36A8000000000000ULL, 0x00000002U); + c(0x36AfffffffffffffULL, 0x00000002U); + c(0x36b0000000000000ULL, 0x00000002U); + c(0x36b0000000000001ULL, 0x00000002U); + + c(0x380fffffdfffffffULL, 0x007fffffU); + c(0x380fffffe0000000ULL, 0x00800000U); + c(0x380fffffe0000001ULL, 0x00800000U); + c(0x380fffffffffffffULL, 0x00800000U); + c(0x3810000000000000ULL, 0x00800000U); + c(0x3810000000000001ULL, 0x00800000U); + c(0x3810000010000000ULL, 0x00800000U); + c(0x3810000010000001ULL, 0x00800001U); + c(0x381000002fffffffULL, 0x00800001U); + c(0x3810000030000000ULL, 0x00800002U); + c(0x3810000050000000ULL, 0x00800002U); + c(0x3810000050000001ULL, 0x00800003U); + + if (failed) + abort (); + else + exit (0); +} +#endif -- 2.30.2