re PR middle-end/36093 (__align__ produces incorrect results in certain cases)
authorRichard Guenther <rguenther@suse.de>
Thu, 1 May 2008 11:22:33 +0000 (11:22 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 1 May 2008 11:22:33 +0000 (11:22 +0000)
2008-05-01  Richard Guenther  <rguenther@suse.de>

PR middle-end/36093
* gcc.c-torture/execute/pr36093.c: New testcase.

From-SVN: r134851

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/pr36093.c [new file with mode: 0644]

index da38b1bedcbeaf11da9f25abb8d85f0a115f2d8f..36ebbf96f3dfaad150514e548365b4e1638d52e6 100644 (file)
@@ -1,3 +1,8 @@
+2008-05-01  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/36093
+       * gcc.c-torture/execute/pr36093.c: New testcase.
+
 2008-04-30  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
 
        * gfortran.dg/selected_char_kind_1.f90: New test.
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr36093.c b/gcc/testsuite/gcc.c-torture/execute/pr36093.c
new file mode 100644 (file)
index 0000000..9549bc3
--- /dev/null
@@ -0,0 +1,28 @@
+extern void abort (void);
+
+typedef struct Bar {
+      char c[129];
+} Bar __attribute__((__aligned__(128)));
+
+typedef struct Foo {
+      Bar bar[4];
+} Foo;
+
+Foo foo[4];
+
+int main()
+{
+   int i, j;
+   Foo *foop = &foo[0];
+
+   for (i=0; i < 4; i++) {
+      Bar *bar = &foop->bar[i];
+      for (j=0; j < 129; j++) {
+         bar->c[j] = 'a' + i;
+      }
+   }
+
+   if (foo[0].bar[3].c[128] != 'd')
+     abort ();
+   return 0;
+}