re PR tree-optimization/63593 (ICE: verify_gimple failed: incompatible types in PHI argument 0 with -O3 -fno-tree-vectorize)
2015-02-16 Richard Biener <rguenther@suse.de> PR tree-optimization/63593 * tree-predcom.c (execute_pred_commoning_chain): Delay removing stmts and releasing SSA names until... (execute_pred_commoning): ... after processing all chains. * gcc.dg/pr63593.c: New testcase. From-SVN: r220734
This commit is contained in:
parent
62991c35a8
commit
a933d47ffa
@ -1,3 +1,10 @@
|
||||
2015-02-16 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/63593
|
||||
* tree-predcom.c (execute_pred_commoning_chain): Delay removing
|
||||
stmts and releasing SSA names until...
|
||||
(execute_pred_commoning): ... after processing all chains.
|
||||
|
||||
2015-02-16 Jan Hubicka <hubicka@ucw.cz>
|
||||
|
||||
PR ipa/65059
|
||||
|
@ -1,3 +1,8 @@
|
||||
2015-02-16 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/63593
|
||||
* gcc.dg/pr63593.c: New testcase.
|
||||
|
||||
2015-02-16 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR c/65066
|
||||
|
20
gcc/testsuite/gcc.dg/pr63593.c
Normal file
20
gcc/testsuite/gcc.dg/pr63593.c
Normal file
@ -0,0 +1,20 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O3 -fno-tree-vectorize" } */
|
||||
|
||||
int in[2 * 4][4];
|
||||
int out[4];
|
||||
|
||||
void
|
||||
foo (void)
|
||||
{
|
||||
int sum;
|
||||
int i, j, k;
|
||||
for (k = 0; k < 4; k++)
|
||||
{
|
||||
sum = 1;
|
||||
for (j = 0; j < 4; j++)
|
||||
for (i = 0; i < 4; i++)
|
||||
sum *= in[i + k][j];
|
||||
out[k] = sum;
|
||||
}
|
||||
}
|
@ -1745,9 +1745,8 @@ execute_pred_commoning_chain (struct loop *loop, chain_p chain,
|
||||
if (chain->combined)
|
||||
{
|
||||
/* For combined chains, just remove the statements that are used to
|
||||
compute the values of the expression (except for the root one). */
|
||||
for (i = 1; chain->refs.iterate (i, &a); i++)
|
||||
remove_stmt (a->stmt);
|
||||
compute the values of the expression (except for the root one).
|
||||
We delay this until after all chains are processed. */
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1811,6 +1810,21 @@ execute_pred_commoning (struct loop *loop, vec<chain_p> chains,
|
||||
execute_pred_commoning_chain (loop, chain, tmp_vars);
|
||||
}
|
||||
|
||||
FOR_EACH_VEC_ELT (chains, i, chain)
|
||||
{
|
||||
if (chain->type == CT_INVARIANT)
|
||||
;
|
||||
else if (chain->combined)
|
||||
{
|
||||
/* For combined chains, just remove the statements that are used to
|
||||
compute the values of the expression (except for the root one). */
|
||||
dref a;
|
||||
unsigned j;
|
||||
for (j = 1; chain->refs.iterate (j, &a); j++)
|
||||
remove_stmt (a->stmt);
|
||||
}
|
||||
}
|
||||
|
||||
update_ssa (TODO_update_ssa_only_virtuals);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user