diff options
author | Bin Cheng <bin.cheng@arm.com> | 2017-08-01 09:20:08 +0000 |
---|---|---|
committer | Bin Cheng <amker@gcc.gnu.org> | 2017-08-01 09:20:08 +0000 |
commit | 7061cfc027e29b6d276ef5e09835c93899cfd132 (patch) | |
tree | 1b875298231b36b3e75154c96662707ab1885345 /gcc/tree-predcom.c | |
parent | 39637a44f4d65ccb23f83399eefd5f06d4bf4e4a (diff) | |
download | gcc-7061cfc027e29b6d276ef5e09835c93899cfd132.zip gcc-7061cfc027e29b6d276ef5e09835c93899cfd132.tar.gz gcc-7061cfc027e29b6d276ef5e09835c93899cfd132.tar.bz2 |
re PR tree-optimization/81627 (ICE on valid code at -O3: in check_loop_closed_ssa_use, at tree-ssa-loop-manip.c:707)
PR tree-optimization/81627
* tree-predcom.c (prepare_finalizers): Always rewrite into loop
closed ssa form for store-store chain.
gcc/testsuite
* gcc.dg/tree-ssa/pr81627.c: New.
From-SVN: r250764
Diffstat (limited to 'gcc/tree-predcom.c')
-rw-r--r-- | gcc/tree-predcom.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/gcc/tree-predcom.c b/gcc/tree-predcom.c index f7a57a4..4538773 100644 --- a/gcc/tree-predcom.c +++ b/gcc/tree-predcom.c @@ -2983,11 +2983,11 @@ prepare_finalizers (struct loop *loop, vec<chain_p> chains) if (prepare_finalizers_chain (loop, chain)) { i++; - /* We don't corrupt loop closed ssa form for store elimination - chain if eliminated stores only store loop invariant values - into memory. */ - if (!chain->inv_store_elimination) - loop_closed_ssa |= (!chain->inv_store_elimination); + /* Be conservative, assume loop closed ssa form is corrupted + by store-store chain. Though it's not always the case if + eliminated stores only store loop invariant values into + memory. */ + loop_closed_ssa = true; } else { |