1 /* { dg-do compile } */
2 /* { dg-options "-O1 -fdump-tree-lim2-details --param allow-store-data-races=1" } */
3 
4 float a[100];
5 
6 int foo(void);
7 float sinf (float);
8 
xxx(void)9 void xxx (void)
10 {
11   int i, k = foo ();
12 
13   for (i = 0; i < 100; i++)
14     a[k] += sinf (i);
15 }
16 
17 /* Store motion may be applied to the assignment to a[k], since sinf
18    cannot read nor write the memory.  */
19 
20 /* { dg-final { scan-tree-dump-times "Moving statement" 1 "lim2" } } */
21