Hi, the following patch set fixes PR47654: Correct typo. Correct computation of max. Fix PR47654: Loop blocking should strip-mine at least two loops. Fix computation of precision. Compute the type of the IV based only on the CLAST bounds. Fix PR47654: Compute LB and UB of a CLAST expression.
First, "Loop blocking should strip-mine at least two loops" disables loop blocking when the strip mine is not applied to at least two loops. In the testcase of this PR we have the first loop that does not contain enough iterations to be strip mined: for (i = 0; i < 40; i++) for (j = 0; j < 128; j++) a[j][i] = 4; The second interesting patch "Fix computation of precision" uses the mpz_sizeinbase function instead of computing the log of the gmp value. "Compute the type of the IV based only on the CLAST bounds" removes the computation of the type of the induction variable based on the polyhedral representation: this is a redundant information at the code generation level, as cloog has already integrated this info in the CLAST. Finally, "Compute LB and UB of a CLAST expression" fixes the root cause of PR47654: it reimplements the type computation based on the low and up bounds of CLAST expressions. This patch set passed bootstrap and test c,c++,fortran on amd64-linux. Full bootstrap and test in progress on amd64-linux. Ok for trunk? Thanks, Sebastian gcc/ChangeLog | 53 +++ gcc/graphite-blocking.c | 59 ++-- gcc/graphite-clast-to-gimple.c | 417 ++++++++++-------------- gcc/graphite-interchange.c | 21 +- gcc/graphite-poly.h | 4 +- gcc/graphite-ppl.h | 14 +- gcc/testsuite/ChangeLog | 10 + gcc/testsuite/gcc.dg/graphite/block-pr47654.c | 25 ++ gcc/testsuite/gcc.dg/graphite/run-id-pr47654.c | 24 ++ 9 files changed, 343 insertions(+), 284 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/graphite/block-pr47654.c create mode 100644 gcc/testsuite/gcc.dg/graphite/run-id-pr47654.c -- 1.7.4.1