diff options
author | Richard Biener <rguenther@suse.de> | 2017-12-05 15:10:23 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2017-12-05 15:10:23 +0000 |
commit | 9824a520b2b293f3e2f0e954e8b358317b553356 (patch) | |
tree | 82c8fde25fe4149fde2e49bd77f2454cc65b6f53 | |
parent | 6acc594827256e256815741aef5102ca6838fa5b (diff) | |
download | gcc-9824a520b2b293f3e2f0e954e8b358317b553356.zip gcc-9824a520b2b293f3e2f0e954e8b358317b553356.tar.gz gcc-9824a520b2b293f3e2f0e954e8b358317b553356.tar.bz2 |
re PR tree-optimization/83277 ([graphite] Wrong code w/ -O2 -floop-nest-optimize)
2017-12-05 Richard Biener <rguenther@suse.de>
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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/graphite-isl-ast-to-gimple.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/graphite/pr83277.c | 52 |
4 files changed, 67 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 87d2b12..cfda6b3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-12-05 Richard Biener <rguenther@suse.de> + + 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 <richard.sandiford@linaro.org> * 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 c565cf0..ab7f0e7 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 6a9ce85..b4f02a7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-12-05 Richard Biener <rguenther@suse.de> + + PR tree-optimization/83277 + * gcc.dg/graphite/pr83277.c: New testcase. + 2017-12-05 Jakub Jelinek <jakub@redhat.com> 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 0000000..aef4fee --- /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; +} |