From: Sebastian Pop Date: Thu, 7 Jan 2010 18:33:01 +0000 (+0000) Subject: Update loop-block testcases. X-Git-Tag: releases/gcc-4.5.0~1351 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=11d6ea5e1da0876047915162678967b0cb90ec49;p=thirdparty%2Fgcc.git Update loop-block testcases. 2010-01-06 Sebastian Pop * graphite-blocking.c (scop_do_block): Print "SCoP will be loop blocked" only when both the strip mine and the interchange have been applied. * testsuite/gcc.dg/graphite/block-2.c: Removed. * testsuite/gcc.dg/graphite/block-3.c: Add scan pattern. * testsuite/gcc.dg/graphite/block-4.c: Same. * testsuite/gcc.dg/graphite/block-5.c: Same. * testsuite/gcc.dg/graphite/block-6.c: Same. From-SVN: r155703 --- diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 780f23eac1e5..f9c66037a0a2 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,3 +1,21 @@ +2010-01-07 Richard Guenther + + PR tree-optimization/42641 + * sese.c (rename_map_elt_info): Use the SSA name version, do + not hash pointers. + +2010-01-06 Sebastian Pop + + * graphite-blocking.c (scop_do_block): Print "SCoP will be loop + blocked" only when both the strip mine and the interchange have + been applied. + + * testsuite/gcc.dg/graphite/block-2.c: Removed. + * testsuite/gcc.dg/graphite/block-3.c: Add scan pattern. + * testsuite/gcc.dg/graphite/block-4.c: Same. + * testsuite/gcc.dg/graphite/block-5.c: Same. + * testsuite/gcc.dg/graphite/block-6.c: Same. + 2010-01-06 Sebastian Pop * graphite-clast-to-gimple.c (save_clast_name_index): Free slot diff --git a/gcc/graphite-blocking.c b/gcc/graphite-blocking.c index 3cf60e92001c..f7ddae2ee917 100644 --- a/gcc/graphite-blocking.c +++ b/gcc/graphite-blocking.c @@ -285,25 +285,27 @@ scop_do_strip_mine (scop_p scop) bool scop_do_block (scop_p scop) { - bool transform_done = false; + bool strip_mined = false; + bool interchanged = false; store_scattering (scop); - lst_do_strip_mine (SCOP_TRANSFORMED_SCHEDULE (scop)); - transform_done = scop_do_interchange (scop); + strip_mined = lst_do_strip_mine (SCOP_TRANSFORMED_SCHEDULE (scop)); + interchanged = scop_do_interchange (scop); /* If we don't interchange loops, then the strip mine is not profitable, and the transform is not a loop blocking. */ - if (!transform_done + if (!interchanged || !graphite_legal_transform (scop)) { restore_scattering (scop); return false; } - else if (dump_file && (dump_flags & TDF_DETAILS)) + else if (strip_mined && interchanged + && dump_file && (dump_flags & TDF_DETAILS)) fprintf (dump_file, "SCoP will be loop blocked.\n"); - return transform_done; + return strip_mined || interchanged; } #endif diff --git a/gcc/testsuite/gcc.dg/graphite/block-2.c b/gcc/testsuite/gcc.dg/graphite/block-2.c deleted file mode 100644 index 210ea3427769..000000000000 --- a/gcc/testsuite/gcc.dg/graphite/block-2.c +++ /dev/null @@ -1,29 +0,0 @@ -typedef unsigned char UChar; -typedef int Int32; -typedef unsigned int UInt32; - -void fallbackSort ( UInt32* fmap, - UInt32* eclass, - Int32 nblock, - Int32 verb ) -{ - Int32 ftab[257]; - Int32 ftabCopy[256]; - Int32 H, i, j, k, l, r, cc, cc1; - Int32 nNotDone; - Int32 nBhtab; - UChar* eclass8 = (UChar*)eclass; - - if (verb >= 4) - VPrintf0 ( " bucket sorting ...\n" ); - for (i = 0; i < 257; i++) ftab[i] = 0; - for (i = 0; i < nblock; i++) ftab[eclass8[i]]++; - for (i = 0; i < 256; i++) ftabCopy[i] = ftab[i]; - for (i = 1; i < 257; i++) ftab[i] += ftab[i-1]; - - for (i = 0; i < nblock; i++) { - j = eclass8[i] + ftab [i]; - } - AssertH ( j < 256, 1005 ); -} -/* { dg-final { cleanup-tree-dump "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/block-3.c b/gcc/testsuite/gcc.dg/graphite/block-3.c index 06eecfb0ae9e..75356161334e 100644 --- a/gcc/testsuite/gcc.dg/graphite/block-3.c +++ b/gcc/testsuite/gcc.dg/graphite/block-3.c @@ -9,17 +9,18 @@ void test (void) { int i, j, k; - /* These loops contain too few iterations for being strip-mined by 64. */ + /* These loops contain too few iterations to be blocked by 64. */ for (i = 0; i < 24; i++) for (j = 0; j < 24; j++) for (k = 0; k < 24; k++) A[i][j][k] = B[i][k] * C[k][j]; - /* These loops should still be strip mined. */ + /* These loops should still be loop blocked. */ for (i = 0; i < M; i++) for (j = 0; j < M; j++) for (k = 0; k < M; k++) A[i][j][k] = B[i][k] * C[k][j]; } +/* { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" } } */ /* { dg-final { cleanup-tree-dump "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/block-4.c b/gcc/testsuite/gcc.dg/graphite/block-4.c index 26b088ec7b43..d752a4d95e62 100644 --- a/gcc/testsuite/gcc.dg/graphite/block-4.c +++ b/gcc/testsuite/gcc.dg/graphite/block-4.c @@ -20,4 +20,5 @@ void test (void) A[i][j] = B[i][k] * C[k][j]; } +/* { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" } } */ /* { dg-final { cleanup-tree-dump "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/block-5.c b/gcc/testsuite/gcc.dg/graphite/block-5.c index 5b2263051b9e..a8f3817e67e9 100644 --- a/gcc/testsuite/gcc.dg/graphite/block-5.c +++ b/gcc/testsuite/gcc.dg/graphite/block-5.c @@ -8,19 +8,19 @@ int test () int b[N][N]; unsigned i, j; - for (i = 0; i < N; i++) + for (i = 0; i < N; i++) for (j = 0; j < N; j++) a[i][j] = i*j; - for (j = 1; j < N; j++) + /* This loop nest should be blocked. */ + for (j = 1; j < N; j++) for (i = 0; i < N; i++) a[i][j] = a[i][j-1] + b[i][j]; - for (i = 0; i < N; i++) - for (j = 0; j < N; j++) - foo (a[i][j]); + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + foo (a[i][j]); } -/* Interchange is legal for loops 0 and 1 of the first two SCoPs */ -/* { dg-final { scan-tree-dump-times "Interchange valid for loops 0 and 1:" 2 "graphite" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" } } */ /* { dg-final { cleanup-tree-dump "graphite" } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/block-6.c b/gcc/testsuite/gcc.dg/graphite/block-6.c index 1c92e395026a..6905e3635f76 100644 --- a/gcc/testsuite/gcc.dg/graphite/block-6.c +++ b/gcc/testsuite/gcc.dg/graphite/block-6.c @@ -7,19 +7,19 @@ int test () int a[N][N]; unsigned i, j; - for (i = 0; i < N; i++) + for (i = 0; i < N; i++) for (j = 0; j < N; j++) - a[i][j] = i*j; + a[i][j] = i*j; - for (i = 1; i < N; i++) + /* Interchange is not legal for loops 0 and 1. */ + for (i = 1; i < N; i++) for (j = 1; j < (N-1) ; j++) - a[i][j] = a[i-1][j+1] * a[i-1][j+1]/2; + a[i][j] = a[i-1][j+1] * a[i-1][j+1]/2; - for (i = 0; i < N; i++) + for (i = 0; i < N; i++) for (j = 0; j < N; j++) - foo (a[i][j]); + foo (a[i][j]); } -/* Interchange is not legal for loops 0 and 1 of SCoP 2. */ -/* { dg-final { scan-tree-dump-times "Interchange not valid for loops 0 and 1:" 1 "graphite" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump-times "will be loop blocked" 0 "graphite" } } */ /* { dg-final { cleanup-tree-dump "graphite" } } */