(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
graphite/
block-4.c
       1  /* { dg-require-effective-target size32plus } */
       2  /* { dg-require-effective-target run_expensive_tests }  PR testsuite/48283 */
       3  
       4  #define DEBUG 0
       5  #if DEBUG
       6  #include <stdio.h>
       7  #endif
       8  
       9  #define N 24
      10  #define M 1000
      11  
      12  int A[M][M], B[M][M], C[M][M];
      13  
      14  static int __attribute__((noinline))
      15  foo (void)
      16  {
      17    int i, j, k;
      18  
      19    /* This should NOT be blocked.  */
      20    for (i = 0; i < 24; i++)
      21      for (j = 0; j < 24; j++)
      22        for (k = 0; k < 24; k++)
      23          A[i][j] = B[i][k] * C[k][j];
      24  
      25    /* This should be blocked.  */
      26    for (i = 0; i < M; i++)
      27      for (j = 0; j < M; j++)
      28        for (k = 0; k < M; k++)
      29          A[i][j] = B[i][k] * C[k][j];
      30  
      31    return A[0][0] + A[M-1][M-1];
      32  }
      33  
      34  extern void abort ();
      35  
      36  int
      37  main (void)
      38  {
      39    int i, j, res;
      40  
      41    for (i = 0; i < M; i++)
      42      for (j = 0; j < M; j++)
      43        {
      44  	B[i][j] = i;
      45  	C[i][j] = j;
      46        }
      47  
      48    res = foo ();
      49  
      50  #if DEBUG
      51    fprintf (stderr, "res = %d \n", res);
      52  #endif
      53  
      54    if (res != 998001)
      55      abort ();
      56  
      57    return 0;
      58  }
      59  
      60  /* { dg-final { scan-tree-dump "tiled by" "graphite" } } */