diff options
author | Richard Biener <rguenther@suse.de> | 2018-10-08 07:16:28 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2018-10-08 07:16:28 +0000 |
commit | 090680870b633853e40a750036dab2b3df63dd18 (patch) | |
tree | 89927edef4170d368dbd423a021c0b8a43465ad8 /gcc/tree-ssa-propagate.c | |
parent | edec2bad9a076e0360ab2e364a20e5ea66825474 (diff) | |
download | gcc-090680870b633853e40a750036dab2b3df63dd18.zip gcc-090680870b633853e40a750036dab2b3df63dd18.tar.gz gcc-090680870b633853e40a750036dab2b3df63dd18.tar.bz2 |
re PR middle-end/63155 (memory hog)
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
Diffstat (limited to 'gcc/tree-ssa-propagate.c')
-rw-r--r-- | gcc/tree-ssa-propagate.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/gcc/tree-ssa-propagate.c b/gcc/tree-ssa-propagate.c index 4cb0fba..b1bfdd5 100644 --- a/gcc/tree-ssa-propagate.c +++ b/gcc/tree-ssa-propagate.c @@ -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: "); |