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: ");

Reply via email to