Mercurial > hg > CbC > CbC_gcc
diff gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-10.c @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | |
children | 1830386684a0 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-10.c Thu Oct 25 07:37:49 2018 +0900 @@ -0,0 +1,44 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -floop-interchange -fdump-tree-linterchange-details" } */ +/* { dg-skip-if "too big data segment" { avr-*-* visium-*-* } } */ + +#define M 256 +int a[M][M], b[M][M]; +int __attribute__((noinline)) +double_reduc (int n) +{ + int sum = 0; + for (int j = 0; j < n; j++) + { + for (int i = 0; i < n; i++) + sum = sum + a[i][j]*b[i][j]; + } + return sum; +} + +extern void abort (); + +static void __attribute__((noinline)) +init (int i) +{ + for (int j = 0; j < M; j++) + { + a[i][j] = i; + b[i][j] = j; + } +} + +int main (void) +{ + for (int i = 0; i < M; ++i) + init (i); + + int sum = double_reduc (M); + + if (sum != 1065369600) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "Loop_pair<outer:., inner:.> is interchanged" 1 "linterchange" } } */