aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-predcom.c
diff options
context:
space:
mode:
authorBin Cheng <bin.cheng@arm.com>2017-08-01 09:20:08 +0000
committerBin Cheng <amker@gcc.gnu.org>2017-08-01 09:20:08 +0000
commit7061cfc027e29b6d276ef5e09835c93899cfd132 (patch)
tree1b875298231b36b3e75154c96662707ab1885345 /gcc/tree-predcom.c
parent39637a44f4d65ccb23f83399eefd5f06d4bf4e4a (diff)
downloadgcc-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.c10
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
{