From 7f370a2b0c2e613f1dcd47909f82e32033ae2381 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Thu, 21 Jan 2016 15:21:55 -0700 Subject: [PATCH] [PATCH] [PR tree-optimization/69347] Fix memory consumption in threader & minor speed improvement PR middle-end/69347 * tree-ssa-dom.c (dom_opt_dom_walker::thread_across_edge): Avoid useless call to record_temporary_equivalences. * tree-ssa-threadbackward.c (find_jump_threads_backwards): Just allocate 10 slots in the bb_path vector and let it grow as needed. (fsm_find_control_statement_thread_paths): Similarly for the next_path vector. From-SVN: r232711 --- gcc/ChangeLog | 10 ++++++++++ gcc/tree-ssa-dom.c | 3 --- gcc/tree-ssa-threadbackward.c | 4 ++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5f0d7c0..c3908ea 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2016-01-21 Jeff Law + + PR middle-end/69347 + * tree-ssa-dom.c (dom_opt_dom_walker::thread_across_edge): Avoid + useless call to record_temporary_equivalences. + * tree-ssa-threadbackward.c (find_jump_threads_backwards): Just + allocate 10 slots in the bb_path vector and let it grow as needed. + (fsm_find_control_statement_thread_paths): Similarly for the next_path + vector. + 2016-01-21 David Edelsohn * configure.ac (gcc_cv_as_powerpc_mfcrf, gcc_cv_as_machine_directive): diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c index 3eeaa9c..84c9a6a 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -935,9 +935,6 @@ dom_opt_dom_walker::thread_across_edge (edge e) m_avail_exprs_stack->push_marker (); m_const_and_copies->push_marker (); - /* Traversing E may result in equivalences we can utilize. */ - record_temporary_equivalences (e, m_const_and_copies, m_avail_exprs_stack); - /* With all the edge equivalences in the tables, go ahead and attempt to thread through E->dest. */ ::thread_across_edge (m_dummy_cond, e, false, diff --git a/gcc/tree-ssa-threadbackward.c b/gcc/tree-ssa-threadbackward.c index 8d8aa30..8be57a0 100644 --- a/gcc/tree-ssa-threadbackward.c +++ b/gcc/tree-ssa-threadbackward.c @@ -142,7 +142,7 @@ fsm_find_control_statement_thread_paths (tree name, int e_count = 0; edge_iterator ei; vec *next_path; - vec_alloc (next_path, n_basic_blocks_for_fn (cfun)); + vec_alloc (next_path, 10); /* When VAR_BB == LAST_BB_IN_PATH, then the first block in the path will already be in VISITED_BBS. When they are not equal, then we @@ -379,7 +379,7 @@ find_jump_threads_backwards (edge e) return; vec *bb_path; - vec_alloc (bb_path, n_basic_blocks_for_fn (cfun)); + vec_alloc (bb_path, 10); vec_safe_push (bb_path, e->dest); hash_set *visited_bbs = new hash_set; -- 2.7.4