991228-1.c: Take word endianness into account.
authorAlexandre Oliva <aoliva@redhat.com>
Fri, 5 Jan 2001 22:06:29 +0000 (22:06 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Fri, 5 Jan 2001 22:06:29 +0000 (22:06 +0000)
* gcc.c-torture/execute/991228-1.c: Take word endianness into
account.

From-SVN: r38725

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/991228-1.c

index e30ed6002e2576ad2607c05109b2bd1337ecb844..e02464653b7ec66205c28a6bef2063eb5a9568ad 100644 (file)
@@ -1,3 +1,8 @@
+2001-01-05  Alexandre Oliva  <aoliva@redhat.com>
+
+       * gcc.c-torture/execute/991228-1.c: Take word endianness into
+       account.
+
 2001-01-05  Joseph S. Myers  <jsm28@cam.ac.uk>
 
        * gcc.c-torture/execute/builtin-complex-1.c: New test.
index 31350eb934c812d9b49a30c39ef5780ba0dd95c1..c6fe78e7dadbc6a19309e8c6ac7283484d11a115 100644 (file)
@@ -1,15 +1,21 @@
 __extension__ union { double d; int i[2]; } u = { d: -0.25 };
 
+/* This assumes the endianness of words in a long long is the same as
+   that for doubles, which doesn't hold for a few platforms, but we
+   can probably special case them here, as appropriate.  */
+long long endianness_test = 1;
+#define MSW (*(int*)&endianness_test)
+
 int
 signbit(double x)
 {
   __extension__ union { double d; int i[2]; } u = { d: x };
-  return u.i[0] < 0;
+  return u.i[MSW] < 0;
 }
     
 int main(void)
 {
-  if (2*sizeof(int) != sizeof(double) || u.i[0] >= 0)
+  if (2*sizeof(int) != sizeof(double) || u.i[MSW] >= 0)
     exit(0);
 
   if (!signbit(-0.25))