From: Geoffrey Keating Date: Sat, 10 Jan 2004 05:52:56 +0000 (+0000) Subject: * gcc.dg/rs6000-ldouble-1.c: New. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1a7a2c0f0de31f7ec54b51df6ee80da9d076dc70;p=gcc.git * gcc.dg/rs6000-ldouble-1.c: New. From-SVN: r75631 --- 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); +}