mirror of git://gcc.gnu.org/git/gcc.git
re PR tree-optimization/88069 (ICE in check_loop_closed_ssa_def, at tree-ssa-loop-manip.c:709)
2018-11-20 Richard Biener <rguenther@suse.de> PR tree-optimization/88069 * tree-ssa-sccvn.c (visit_phi): Do not value-number to unvisited virtual PHI arguments. * gcc.dg/pr88069.c: New testcase. From-SVN: r266308
This commit is contained in:
parent
48c4096cda
commit
b34ac019f8
|
|
@ -1,3 +1,9 @@
|
||||||
|
2018-11-20 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR tree-optimization/88069
|
||||||
|
* tree-ssa-sccvn.c (visit_phi): Do not value-number to unvisited
|
||||||
|
virtual PHI arguments.
|
||||||
|
|
||||||
2018-11-20 Ilya Leoshkevich <iii@linux.ibm.com>
|
2018-11-20 Ilya Leoshkevich <iii@linux.ibm.com>
|
||||||
|
|
||||||
PR target/88083
|
PR target/88083
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2018-11-20 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR tree-optimization/88069
|
||||||
|
* gcc.dg/pr88069.c: New testcase.
|
||||||
|
|
||||||
2018-11-20 Martin Liska <mliska@suse.cz>
|
2018-11-20 Martin Liska <mliska@suse.cz>
|
||||||
|
|
||||||
PR ipa/88093
|
PR ipa/88093
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "-O -ftree-pre -ftree-vectorize -fno-tree-pta" } */
|
||||||
|
|
||||||
|
void
|
||||||
|
qf (void);
|
||||||
|
|
||||||
|
void
|
||||||
|
mr (short int db)
|
||||||
|
{
|
||||||
|
int vq;
|
||||||
|
short int *lp = &db;
|
||||||
|
|
||||||
|
for (vq = 0; vq < 1; ++vq)
|
||||||
|
qf ();
|
||||||
|
|
||||||
|
while (*lp < 2)
|
||||||
|
{
|
||||||
|
*lp = db;
|
||||||
|
lp = (short int *) &vq;
|
||||||
|
++*lp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -4194,12 +4194,19 @@ visit_phi (gimple *phi, bool *inserted, bool backedges_varying_p)
|
||||||
value from the backedge as that confuses the alias-walking code.
|
value from the backedge as that confuses the alias-walking code.
|
||||||
See gcc.dg/torture/pr87176.c. If the value is the same on a
|
See gcc.dg/torture/pr87176.c. If the value is the same on a
|
||||||
non-backedge everything is OK though. */
|
non-backedge everything is OK though. */
|
||||||
if (backedge_val
|
bool visited_p;
|
||||||
&& !seen_non_backedge
|
if ((backedge_val
|
||||||
&& TREE_CODE (backedge_val) == SSA_NAME
|
&& !seen_non_backedge
|
||||||
&& sameval == backedge_val
|
&& TREE_CODE (backedge_val) == SSA_NAME
|
||||||
&& (SSA_NAME_IS_VIRTUAL_OPERAND (backedge_val)
|
&& sameval == backedge_val
|
||||||
|| SSA_VAL (backedge_val) != backedge_val))
|
&& (SSA_NAME_IS_VIRTUAL_OPERAND (backedge_val)
|
||||||
|
|| SSA_VAL (backedge_val) != backedge_val))
|
||||||
|
/* Do not value-number a virtual operand to sth not visited though
|
||||||
|
given that allows us to escape a region in alias walking. */
|
||||||
|
|| (sameval
|
||||||
|
&& TREE_CODE (sameval) == SSA_NAME
|
||||||
|
&& SSA_NAME_IS_VIRTUAL_OPERAND (sameval)
|
||||||
|
&& (SSA_VAL (sameval, &visited_p), !visited_p)))
|
||||||
/* Note this just drops to VARYING without inserting the PHI into
|
/* Note this just drops to VARYING without inserting the PHI into
|
||||||
the hashes. */
|
the hashes. */
|
||||||
result = PHI_RESULT (phi);
|
result = PHI_RESULT (phi);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue