1  /* { dg-do compile } */
       2  /* { dg-options "-O1 -fdump-tree-lim2-details -fallow-store-data-races" } */
       3  
       4  float a[100];
       5  
       6  int foo(void);
       7  float sinf (float);
       8  
       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" } } */