summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/tree-ssa/ldist-4.c
blob: a744fea020a31ca8f395adc549180dca77b03da7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/* { dg-do compile } */ 
/* { dg-options "-O2 -ftree-loop-distribution -fdump-tree-ldist-all" } */

int loop1 (int k)
{
  unsigned int i;
  unsigned int j;
  int a[100], b[100][100];

  a[0] = k;
  for (i = 1; i < 100; i ++)
    {
      for (j = 0; j < 100; j++)
	{
	  a[j] = k * i;
	  b[i][j] = a[j-1] + k;
	}
    }

  return b[100-1][0];
}

/* We used to distribute also innermost loops, but these could produce
   too much code in the outer loop, degrading performance of scalar
   code.  So this test was XFAILed because the cost model of the stand
   alone distribution pass has evolved.  Now it passes.  */
/* { dg-final { scan-tree-dump-times "distributed: split to 2 loops" 0 "ldist" { target ilp32 } } } */
/* { dg-final { scan-tree-dump-times "distributed: split to 2 loops" 1 "ldist" { target lp64 } } } */
/* { dg-final { cleanup-tree-dump "ldist" } } */