tree-optimization/116460 - improve forwprop compile-time
The following improves forwprop block reachability which I noticed when debugging PR116460 and what is also noted in the comment. It avoids processing blocks in natural loops determined unreachable, thereby making the issue in PR116460 latent. PR tree-optimization/116460 * tree-ssa-forwprop.cc (pass_forwprop::execute): Do not process blocks in unreachable natural loops.
This commit is contained in:
parent
03b802e14f
commit
0ceeb9926d
1 changed files with 7 additions and 6 deletions
|
@ -3498,6 +3498,8 @@ pass_forwprop::execute (function *fun)
|
|||
|
||||
cfg_changed = false;
|
||||
|
||||
calculate_dominance_info (CDI_DOMINATORS);
|
||||
|
||||
/* Combine stmts with the stmts defining their operands. Do that
|
||||
in an order that guarantees visiting SSA defs before SSA uses. */
|
||||
lattice.create (num_ssa_names);
|
||||
|
@ -3537,12 +3539,11 @@ pass_forwprop::execute (function *fun)
|
|||
FOR_EACH_EDGE (e, ei, bb->preds)
|
||||
{
|
||||
if ((e->flags & EDGE_EXECUTABLE)
|
||||
/* With dominators we could improve backedge handling
|
||||
when e->src is dominated by bb. But for irreducible
|
||||
regions we have to take all backedges conservatively.
|
||||
We can handle single-block cycles as we know the
|
||||
dominator relationship here. */
|
||||
|| bb_to_rpo[e->src->index] > i)
|
||||
/* We can handle backedges in natural loops correctly but
|
||||
for irreducible regions we have to take all backedges
|
||||
conservatively when we did not visit the source yet. */
|
||||
|| (bb_to_rpo[e->src->index] > i
|
||||
&& !dominated_by_p (CDI_DOMINATORS, e->src, e->dest)))
|
||||
{
|
||||
any = true;
|
||||
break;
|
||||
|
|
Loading…
Add table
Reference in a new issue