The following XFAILs the testcases, making them fail reliably independelty of int/long type sizes and also providing new testcase variants that succeed reliably.
I don't see us fixing the underlying niter analysis issue for GCC 7. Tested on x86_64-unknown-linux-gnu with {,-m32}, applied. Richard. 2017-02-01 Richard Biener <rguent...@suse.de> PR testsuite/76957 * gcc.dg/graphite/scop-dsyr2k-2.c: New testcase. * gcc.dg/graphite/scop-dsyrk-2.c: Likewise. * gcc.dg/graphite/scop-dsyr2k.c: XFAIL. * gcc.dg/graphite/scop-dsyrk.c: Likewise. Index: gcc/testsuite/gcc.dg/graphite/scop-dsyr2k-2.c =================================================================== --- gcc/testsuite/gcc.dg/graphite/scop-dsyr2k-2.c (nonexistent) +++ gcc/testsuite/gcc.dg/graphite/scop-dsyr2k-2.c (working copy) @@ -0,0 +1,24 @@ +/* { dg-require-effective-target size32plus } */ +#define NMAX 3000 + +static double a[NMAX][NMAX], b[NMAX][NMAX], c[NMAX][NMAX]; + +typedef __INT32_TYPE__ int32_t; +typedef __INT64_TYPE__ int64_t; + +void dsyr2k(int64_t N) { + int32_t i,j,k; + +#pragma scop + for (i=0; i<N; i++) { + for (j=0; j<N; j++) { + for (k=j; k<N; k++) { + c[j][k] += a[i][j] * b[i][k] + b[i][j] * a[i][k]; + } + } + } +#pragma endscop +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite"} } */ + Index: gcc/testsuite/gcc.dg/graphite/scop-dsyr2k.c =================================================================== --- gcc/testsuite/gcc.dg/graphite/scop-dsyr2k.c (revision 245089) +++ gcc/testsuite/gcc.dg/graphite/scop-dsyr2k.c (working copy) @@ -3,7 +3,7 @@ static double a[NMAX][NMAX], b[NMAX][NMAX], c[NMAX][NMAX]; -void dsyr2k(long N) { +void dsyr2k(int N) { int i,j,k; #pragma scop @@ -17,5 +17,4 @@ void dsyr2k(long N) { #pragma endscop } -/* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite"} } */ - +/* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite" { xfail *-*-* } } } */ Index: gcc/testsuite/gcc.dg/graphite/scop-dsyrk-2.c =================================================================== --- gcc/testsuite/gcc.dg/graphite/scop-dsyrk-2.c (nonexistent) +++ gcc/testsuite/gcc.dg/graphite/scop-dsyrk-2.c (working copy) @@ -0,0 +1,25 @@ +/* { dg-require-effective-target size32plus } */ +#define NMAX 3000 +#define MEASURE_TIME 1 + +static double a[NMAX][NMAX], c[NMAX][NMAX]; + +typedef __INT32_TYPE__ int32_t; +typedef __INT64_TYPE__ int64_t; + +void dsyrk(int64_t N) +{ + int32_t i,j,k; + +#pragma scop + for (i=0; i<N; i++) { + for (j=0; j<N; j++) { + for (k=j; k<N; k++) { + c[j][k] += a[i][j] * a[i][k]; + } + } + } +#pragma endscop +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite" } } */ Index: gcc/testsuite/gcc.dg/graphite/scop-dsyrk.c =================================================================== --- gcc/testsuite/gcc.dg/graphite/scop-dsyrk.c (revision 245089) +++ gcc/testsuite/gcc.dg/graphite/scop-dsyrk.c (working copy) @@ -4,7 +4,7 @@ static double a[NMAX][NMAX], c[NMAX][NMAX]; -void dsyrk(long N) +void dsyrk(int N) { int i,j,k; @@ -19,4 +19,4 @@ void dsyrk(long N) #pragma endscop } -/* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite" } } */ +/* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite" { xfail *-*-* } } } */