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)) foo(void)15foo (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 main(void)37main (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" } } */ 61