+extern void abort (void);\r
+\r
+typedef struct {\r
+ int a[3];\r
+ int num;\r
+} t1;\r
+t1 B[100];\r
+int A[300];\r
+\r
+void __attribute__((noinline,noclone))\r
+bar (int *A, t1 *B, int n)\r
+{\r
+ int i;\r
+ int *a = A;\r
+ for (i=0; i<n; i++, a+=3)\r
+ {\r
+ a[0] = B[i].a[0];\r
+ a[1] = B[i].a[1];\r
+ a[2] = B[i].a[2];\r
+ }\r
+}\r
+\r
+int main()\r
+{\r
+ int i;\r
+ for (i=0; i<100; i++) \r
+ {\r
+ B[i].num = i;\r
+ B[i].a[0] = i * 3;\r
+ B[i].a[1] = i * 3 + 1;\r
+ B[i].a[2] = i * 3 + 2;\r
+ __asm__ volatile ("");\r
+ }\r
+ bar (&A[0], &B[0], 100);\r
+ for (i=0; i<300; i++)\r
+ if (A[i] != i)\r
+ abort ();\r
+ return 0;\r
+} \r
+\r
+/* { dg-final { cleanup-tree-dump "vect" } } */\r