1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-lim2-details" } */
3 
4 int x;
5 int a[100];
6 
7 struct a
8 {
9   int X;
10   int Y;
11 };
12 
13 struct a arr[100];
14 
test4(unsigned b)15 void test4(unsigned b)
16 {
17   unsigned i;
18 
19   /* And here.  */
20   for (i = 0; i < 100; i++)
21     {
22       arr[b+8].X += i;
23       arr[b+9].X += i;
24     }
25 }
26 
test5(struct a * A,unsigned b)27 void test5(struct a *A, unsigned b)
28 {
29   unsigned i;
30 
31   /* And here as well.  */
32   for (i = 0; i < 100; i++)
33     {
34       A[b].X += i;
35       A[b+1].Y += i;
36     }
37 }
38 
39 /* { dg-final { scan-tree-dump-times "Executing store motion of" 4 "lim2" { xfail { lp64 || llp64 } } } } */
40