Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.
Richard. 2018-10-08 Richard Biener <rguent...@suse.de> PR tree-optimization/63155 * tree-ssa-propagate.c (add_ssa_edge): Do cheap check first. (ssa_propagation_engine::ssa_propagate): Remove redundant bitmap bit clearing. Index: gcc/tree-ssa-propagate.c =================================================================== --- gcc/tree-ssa-propagate.c (revision 264911) +++ gcc/tree-ssa-propagate.c (working copy) @@ -143,10 +143,12 @@ add_ssa_edge (tree var) FOR_EACH_IMM_USE_FAST (use_p, iter, var) { gimple *use_stmt = USE_STMT (use_p); - basic_block use_bb = gimple_bb (use_stmt); + if (!prop_simulate_again_p (use_stmt)) + continue; /* If we did not yet simulate the block wait for this to happen and do not add the stmt to the SSA edge worklist. */ + basic_block use_bb = gimple_bb (use_stmt); if (! (use_bb->flags & BB_VISITED)) continue; @@ -157,9 +159,6 @@ add_ssa_edge (tree var) & EDGE_EXECUTABLE)) continue; - if (!prop_simulate_again_p (use_stmt)) - continue; - bitmap worklist; if (bb_to_cfg_order[gimple_bb (use_stmt)->index] < curr_order) worklist = ssa_edge_worklist_back; @@ -804,7 +803,6 @@ ssa_propagation_engine::ssa_propagate (v else { curr_order = next_stmt_bb_order; - bitmap_clear_bit (ssa_edge_worklist, next_stmt_uid); if (dump_file && (dump_flags & TDF_DETAILS)) { fprintf (dump_file, "\nSimulating statement: ");