OSDN Git Service

* gcc.dg/rs6000-ldouble-1.c: New.
authorgeoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 10 Jan 2004 05:52:56 +0000 (05:52 +0000)
committergeoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 10 Jan 2004 05:52:56 +0000 (05:52 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75631 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/rs6000-ldouble-1.c [new file with mode: 0644]

index 0d4b3d6..d98af87 100644 (file)
@@ -1,3 +1,7 @@
+2004-01-09  Geoffrey Keating  <geoffk@apple.com>
+
+       * gcc.dg/rs6000-ldouble-1.c: New.
+
 2004-01-10  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
 
        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 (file)
index 0000000..52d2da8
--- /dev/null
@@ -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);
+}