OSDN Git Service

PR tree-optimization/38051
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 18 Nov 2008 23:01:35 +0000 (23:01 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 18 Nov 2008 23:01:35 +0000 (23:01 +0000)
* gcc.c-torture/execute/pr38051.c (buf): Remove aligned attribute.
(buf2): Removed.
(main): Only run on little endian targets with
sizeof (long) == sizeof (void *).  Use just one buffer, align the
pointers at runtime.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@141983 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/pr38051.c

index a2b3096..4f49d7f 100644 (file)
@@ -1,3 +1,12 @@
+2008-11-18  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/38051
+       * gcc.c-torture/execute/pr38051.c (buf): Remove aligned attribute.
+       (buf2): Removed.
+       (main): Only run on little endian targets with
+       sizeof (long) == sizeof (void *).  Use just one buffer, align the
+       pointers at runtime.
+
 2008-11-18  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR libfortran/38135
index 3437f73..e3b6dd9 100644 (file)
@@ -188,18 +188,28 @@ int mymemcmp (const void *s1, const void *s2, size_t len)
     return mymemcmp3 (srcp1, srcp2, len / (sizeof (unsigned long int)));
 }
 
-char buf[256] __attribute__((aligned (16)));
-char buf2[256] __attribute__((aligned (16)));
+char buf[256];
 
 int
 main (void)
 {
-  __builtin_memcpy (buf + 9,
+  char *p;
+  union { long int l; char c[sizeof (long int)]; } u;
+
+  /* The test above assumes little endian and long being the same size
+     as pointer.  */
+  if (sizeof (long int) != sizeof (void *) || sizeof (long int) < 4)
+    return 0;
+  u.l = 0x12345678L;
+  if (u.c[0] != 0x78 || u.c[1] != 0x56 || u.c[2] != 0x34 || u.c[3] != 0x12)
+    return 0;
+
+  p = buf + 16 - (((long int) buf) & 15);
+  __builtin_memcpy (p + 9,
 "\x1\x37\x82\xa7\x55\x49\x9d\xbf\xf8\x44\xb6\x55\x17\x8e\xf9", 15);
-  __builtin_memcpy (buf2 + 24,
+  __builtin_memcpy (p + 128 + 24,
 "\x1\x37\x82\xa7\x55\x49\xd0\xf3\xb7\x2a\x6d\x23\x71\x49\x6a", 15);
-  if (mymemcmp (buf + 9, buf2 + 24, 33) != -51)
+  if (mymemcmp (p + 9, p + 128 + 24, 33) != -51)
     __builtin_abort ();
   return 0;
 }
-