1/* { dg-require-effective-target size32plus } */
2
3#define DEBUG 0
4
5#if DEBUG
6#include <stdio.h>
7#endif
8
9#define N 1000
10int a[N][N];
11
12static int __attribute__((noinline))
13foo (void)
14{
15  int j;
16  int i;
17
18  for (i = 0; i < N; i++)
19    for (j = 0; j < N; j++)
20      a[j][i] = a[j][i] + 1;
21
22  return a[N-1][N-1];
23}
24
25extern void abort ();
26
27int
28main (void)
29{
30  int i, j, res;
31
32  for (i = 0; i < N; i++)
33    for (j = 0; j < N; j++)
34      a[i][j] = 1;
35
36  a[N-1][N-1] = 12;
37  res = foo ();
38
39#if DEBUG
40  fprintf (stderr, "res = %d \n", res);
41#endif
42
43  if (res != 13)
44    abort ();
45
46  return 0;
47}
48
49/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
50/* { dg-final { cleanup-tree-dump "graphite" } } */
51