re PR middle-end/63155 (memory hog)
authorRichard Biener <rguenther@suse.de>
Mon, 8 Oct 2018 07:16:28 +0000 (07:16 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 8 Oct 2018 07:16:28 +0000 (07:16 +0000)
2018-10-08  Richard Biener  <rguenther@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.

From-SVN: r264912

gcc/ChangeLog
gcc/tree-ssa-propagate.c

index 73f26a936ecbe19a1e189434bb3e8cacf39cabc8..e53b7956644fd20601412755f3aeed91e9b3e319 100644 (file)
@@ -1,3 +1,10 @@
+2018-10-08  Richard Biener  <rguenther@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.
+
 2018-10-05  Peter Bergner  <bergner@linux.ibm.com>
 
        PR rtl-optimization/86939
index 4cb0fbaed15510807c04b86d1369135a43668beb..b1bfdd5c0169e78465aa6c786ce67b356e51b85e 100644 (file)
@@ -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 (void)
       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: ");