On 2015.07.06 at 14:40 +0200, Richard Biener wrote: > > The intent (as I read it) of the iteration order in ssa_propagate is > to process stmts in the following order: > > 1) complete simulation of BBs from making one of their entries executable > 2) simulation of stmts fed by stmts that changed to VARYING > 3) simulation of the rest of stmts fed by stmts that changed their > lattice value > > but the current implementation fails to enforce this order because it > drains the full worklists before considering entries added to the > others by simulating a statement. This leads to quite some extra > simulation with too optimistic values from not yet executable edges > (just run into this while debugging PR66733). > > The current state is that of the original propagator implementation > in this area. > > The patch cuts the number of visited stmts for the testcase in PR66773 > from 23 to 20 (it visits PHI nodes 3 times less).
This patch breaks LTO/PGO bootstrap, see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66801 -- Markus