From: Richard Biener Date: Tue, 5 Dec 2017 15:10:23 +0000 (+0000) Subject: re PR tree-optimization/83277 ([graphite] Wrong code w/ -O2 -floop-nest-optimize) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9824a520b2b293f3e2f0e954e8b358317b553356;p=gcc.git re PR tree-optimization/83277 ([graphite] Wrong code w/ -O2 -floop-nest-optimize) 2017-12-05 Richard Biener PR tree-optimization/83277 * graphite-isl-ast-to-gimple.c (should_copy_to_new_region): Make sure to code-gen liveout vars. * gcc.dg/graphite/pr83277.c: New testcase. From-SVN: r255424 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 87d2b12c7a7..cfda6b3c691 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-12-05 Richard Biener + + PR tree-optimization/83277 + * graphite-isl-ast-to-gimple.c (should_copy_to_new_region): Make sure + to code-gen liveout vars. + 2017-12-05 Richard Sandiford * config/aarch64/aarch64-simd.md (aarch64_simd_bsldi_internal) diff --git a/gcc/graphite-isl-ast-to-gimple.c b/gcc/graphite-isl-ast-to-gimple.c index c565cf00379..ab7f0e786ba 100644 --- a/gcc/graphite-isl-ast-to-gimple.c +++ b/gcc/graphite-isl-ast-to-gimple.c @@ -1137,8 +1137,10 @@ should_copy_to_new_region (gimple *stmt, sese_info_p region) if (is_gimple_assign (stmt) && (lhs = gimple_assign_lhs (stmt)) && TREE_CODE (lhs) == SSA_NAME - && is_gimple_reg (lhs) - && scev_analyzable_p (lhs, region->region)) + && scev_analyzable_p (lhs, region->region) + /* But to code-generate liveouts - liveout PHI generation is + in generic sese.c code that cannot do code generation. */ + && ! bitmap_bit_p (region->liveout, SSA_NAME_VERSION (lhs))) return false; return true; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6a9ce85fee5..b4f02a70046 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-12-05 Richard Biener + + PR tree-optimization/83277 + * gcc.dg/graphite/pr83277.c: New testcase. + 2017-12-05 Jakub Jelinek PR tree-optimization/83283 diff --git a/gcc/testsuite/gcc.dg/graphite/pr83277.c b/gcc/testsuite/gcc.dg/graphite/pr83277.c new file mode 100644 index 00000000000..aef4fee4272 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/pr83277.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -floop-nest-optimize" } */ + +int rk, si = 0; +int jr[2]; + +int +wv (signed char n8) +{ + const int tw = 8; + int xq[tw]; + int bj, pu = 0; + + for (bj = 0; bj < tw; ++bj) + xq[bj] = 0; + + bj = 0; + while (bj < 1) + { + int gs = n8 ^ 128; + + if (gs != 0) + { + int u7[3]; + + while (bj < 2) + { + u7[bj] = 0; + ++bj; + } + + jr[0] = u7[0]; + rk = xq[0]; + pu = n8; + + if (si != 0) + return si; + } + } + + return pu; +} + +int +main (void) +{ + signed char ax = 1; + + if (wv (ax) != ax) + __builtin_abort (); + return 0; +}