(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
tree-ssa/
ldist-3.c
       1  /* { dg-do compile { target int32plus } } */ 
       2  /* { dg-options "-O2 -ftree-loop-distribution -fdump-tree-ldist-all" } */
       3  
       4  int loop1 (int k)
       5  {
       6    unsigned int i;
       7    int a[10000], b[10000], c[10000], d[10000];
       8  	
       9    a[0] = k; a[3] = k*2;
      10    c[1] = k+1;
      11    for (i = 2; i < (10000-1); i ++)
      12      {
      13        a[i] = k * i; /* S1 */
      14        b[i] = a[i-2] + k; /* S2 */
      15        c[i] = b[i] + a[i+1]; /* S3 */
      16        d[i] = c[i-1] + k + i; /* S4 */
      17      }
      18    /*
      19      Dependences:
      20      S1 -> S2 (flow, level 1)
      21      S1 -> S3 (anti, level 1)
      22      S2 -> S3 (flow, level 0)
      23      S3 -> S4 (flow, level 1)
      24  
      25      There are three partitions: {S1, S3}, {S2} and {S4}.
      26  
      27      The cost model should fuse together all the partitions, as they
      28      are reusing the same data, ending on a single partition.
      29    */
      30    return a[10000-2] + b[10000-1] + c[10000-2] + d[10000-2];
      31  }
      32  
      33  /* { dg-final { scan-tree-dump-times "distributed: split to 3 loops" 0 "ldist" } } */