Commit 7061cfc0 by Bin Cheng Committed by Bin Cheng

re PR tree-optimization/81627 (ICE on valid code at -O3: in…

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
parent 39637a44
2017-08-01 Bin Cheng <bin.cheng@arm.com>
PR tree-optimization/81627
* tree-predcom.c (prepare_finalizers): Always rewrite into loop
closed ssa form for store-store chain.
2017-08-01 Bin Cheng <bin.cheng@arm.com>
PR tree-optimization/81620
* tree-predcom.c (add_ref_to_chain): Don't set has_max_use_after
for store-store chain.
......
2017-08-01 Bin Cheng <bin.cheng@arm.com>
PR tree-optimization/81627
* gcc.dg/tree-ssa/pr81627.c: New.
2017-08-01 Bin Cheng <bin.cheng@arm.com>
PR tree-optimization/81620
* gcc.dg/tree-ssa/pr81620-1.c: New.
* gcc.dg/tree-ssa/pr81620-2.c: New.
......
/* { dg-do run } */
/* { dg-options "-O3 -fno-tree-loop-vectorize -fdump-tree-pcom-details" } */
int a, b, c, d[6], e = 3, f;
void abort (void);
void fn1 ()
{
for (b = 1; b < 5; b++)
{
for (c = 0; c < 5; c++)
d[b] = e;
if (a)
f++;
d[b + 1] = 1;
}
}
int main ()
{
fn1 ();
if (d[0] != 0 || d[1] != 3 || d[2] != 3
|| d[3] != 3 || d[4] != 3 || d[5] != 1)
abort ();
return 0;
}
/* { dg-final { scan-tree-dump-times "Store-stores chain" 1 "pcom" } } */
......@@ -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
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment