From 1a7a2c0f0de31f7ec54b51df6ee80da9d076dc70 Mon Sep 17 00:00:00 2001 From: Geoffrey Keating Date: Sat, 10 Jan 2004 05:52:56 +0000 Subject: [PATCH] * gcc.dg/rs6000-ldouble-1.c: New. From-SVN: r75631 --- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/rs6000-ldouble-1.c | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/rs6000-ldouble-1.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0d4b3d6438e..d98af87628f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2004-01-09 Geoffrey Keating + + * gcc.dg/rs6000-ldouble-1.c: New. + 2004-01-10 Giovanni Bajo DR 337 diff --git a/gcc/testsuite/gcc.dg/rs6000-ldouble-1.c b/gcc/testsuite/gcc.dg/rs6000-ldouble-1.c new file mode 100644 index 00000000000..52d2da802aa --- /dev/null +++ b/gcc/testsuite/gcc.dg/rs6000-ldouble-1.c @@ -0,0 +1,23 @@ +/* { dg-do run { target powerpc*-*-darwin* powerpc*-*-aix* powerpc64-*-linux rs6000-*-* } } */ +/* { dg-options "-mlong-double-128" } */ + +/* Check that long double values are rounded correctly when being converted + to 32-bit integers. All these values are of the form +/- 2 +/- 2^-60. */ + +int main(void) +{ + long double l1 = 1.9999999999999999991326382620115964527941L; + long double l2 = 2.0000000000000000008673617379884035472059L; + long double l3 = -2.0000000000000000008673617379884035472059L; + long double l4 = -1.9999999999999999991326382620115964527941L; + + if ((int) l1 != 1) + abort (); + if ((int) l2 != 2) + abort (); + if ((int) l3 != -2) + abort (); + if ((int) l4 != -1) + abort (); + exit (0); +} -- 2.30.2