From 6190e14740643bdcd67fc4ff0a69c2207d0c0bf7 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 25 Sep 2002 10:14:48 -0700 Subject: [PATCH] 20010226-1.c: Early exit for too-small long double. * gcc.c-torture/execute/ieee/20010226-1.c: Early exit for too-small long double. From-SVN: r57502 --- gcc/testsuite/ChangeLog | 5 +++++ .../gcc.c-torture/execute/ieee/20010226-1.c | 15 +++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4f958459e48..b4021bc765f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2002-09-25 Richard Henderson + + * gcc.c-torture/execute/ieee/20010226-1.c: Early exit for + too-small long double. + 2002-09-23 Hans-Peter Nilsson * gcc.dg/20020919-1.c: New test. diff --git a/gcc/testsuite/gcc.c-torture/execute/ieee/20010226-1.c b/gcc/testsuite/gcc.c-torture/execute/ieee/20010226-1.c index 91c8da3b4d9..daa2745e939 100644 --- a/gcc/testsuite/gcc.c-torture/execute/ieee/20010226-1.c +++ b/gcc/testsuite/gcc.c-torture/execute/ieee/20010226-1.c @@ -1,17 +1,24 @@ +#include + long double dfrom = 1.1; long double m1; long double m2; unsigned long mant_long; -int main( ) +int main() { - m1 = dfrom / 2.0; + /* Some targets don't support a conforming long double type. This is + common with very small parts which set long double == float. Look + to see if the type has at least 32 bits of precision. */ + if (LDBL_EPSILON > 0x1p-31L) + return 0; + m1 = dfrom / 2.0; m2 = m1 * 4294967296.0; mant_long = ((unsigned long) m2) & 0xffffffff; - if ( mant_long == 0x8ccccccc) - exit (0); + if (mant_long == 0x8ccccccc) + return 0; else abort(); } -- 2.30.2