[PATCH] Make SSA propagator iteration order consistent
Markus Trippelsdorf
markus@trippelsdorf.de
Wed Jul 8 10:25:00 GMT 2015
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
More information about the Gcc-patches
mailing list