re PR tree-optimization/89789 (Compile time hog during RPO VN)
2019-03-25 Richard Biener <rguenther@suse.de> PR tree-optimization/89789 * tree-ssa-sccvn.c (set_ssa_val_to): Do not allow lattice changes from non-undefined back to undefined. * gcc.dg/torture/pr89789.c: New testcase. From-SVN: r269917
This commit is contained in:
parent
be5ce04a61
commit
8d6419db2c
4 changed files with 59 additions and 4 deletions
|
@ -1,3 +1,9 @@
|
|||
2019-03-25 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/89789
|
||||
* tree-ssa-sccvn.c (set_ssa_val_to): Do not allow lattice
|
||||
changes from non-undefined back to undefined.
|
||||
|
||||
2019-03-25 Thomas Otto <thomas.otto@pdv-fs.de>
|
||||
|
||||
* dwarf2out.c (comp_dir_string): cached_wd could be set to both a
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2019-03-25 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/89789
|
||||
* gcc.dg/torture/pr89789.c: New testcase.
|
||||
|
||||
2019-03-25 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
* g++.dg/abi/lambda-static-1.C: New.
|
||||
|
|
23
gcc/testsuite/gcc.dg/torture/pr89789.c
Normal file
23
gcc/testsuite/gcc.dg/torture/pr89789.c
Normal file
|
@ -0,0 +1,23 @@
|
|||
/* { dg-do compile } */
|
||||
|
||||
int x2;
|
||||
|
||||
void
|
||||
m2 (void)
|
||||
{
|
||||
goto gg;
|
||||
|
||||
int fz, vh = 0;
|
||||
|
||||
for (fz = 0; fz < 1; ++fz)
|
||||
{
|
||||
vh ^= x2;
|
||||
|
||||
if (0)
|
||||
{
|
||||
gg:
|
||||
x2 %= 1;
|
||||
x2 += vh;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -3746,10 +3746,13 @@ set_ssa_val_to (tree from, tree to)
|
|||
}
|
||||
return false;
|
||||
}
|
||||
else if (currval != VN_TOP
|
||||
&& ! is_gimple_min_invariant (currval)
|
||||
&& ! ssa_undefined_value_p (currval, false)
|
||||
&& is_gimple_min_invariant (to))
|
||||
bool curr_invariant = is_gimple_min_invariant (currval);
|
||||
bool curr_undefined = (TREE_CODE (currval) == SSA_NAME
|
||||
&& ssa_undefined_value_p (currval, false));
|
||||
if (currval != VN_TOP
|
||||
&& !curr_invariant
|
||||
&& !curr_undefined
|
||||
&& is_gimple_min_invariant (to))
|
||||
{
|
||||
if (dump_file && (dump_flags & TDF_DETAILS))
|
||||
{
|
||||
|
@ -3764,6 +3767,24 @@ set_ssa_val_to (tree from, tree to)
|
|||
}
|
||||
to = from;
|
||||
}
|
||||
else if (currval != VN_TOP
|
||||
&& !curr_undefined
|
||||
&& TREE_CODE (to) == SSA_NAME
|
||||
&& ssa_undefined_value_p (to, false))
|
||||
{
|
||||
if (dump_file && (dump_flags & TDF_DETAILS))
|
||||
{
|
||||
fprintf (dump_file, "Forcing VARYING instead of changing "
|
||||
"value number of ");
|
||||
print_generic_expr (dump_file, from);
|
||||
fprintf (dump_file, " from ");
|
||||
print_generic_expr (dump_file, currval);
|
||||
fprintf (dump_file, " (non-undefined) to ");
|
||||
print_generic_expr (dump_file, to);
|
||||
fprintf (dump_file, " (undefined)\n");
|
||||
}
|
||||
to = from;
|
||||
}
|
||||
else if (TREE_CODE (to) == SSA_NAME
|
||||
&& SSA_NAME_OCCURS_IN_ABNORMAL_PHI (to))
|
||||
to = from;
|
||||
|
|
Loading…
Add table
Reference in a new issue