[PATCH] [PR tree-optimization/69347] Fix memory consumption in threader & minor speed...
authorJeff Law <law@redhat.com>
Thu, 21 Jan 2016 22:21:55 +0000 (15:21 -0700)
committerJeff Law <law@gcc.gnu.org>
Thu, 21 Jan 2016 22:21:55 +0000 (15:21 -0700)
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
gcc/tree-ssa-dom.c
gcc/tree-ssa-threadbackward.c

index 5f0d7c0..c3908ea 100644 (file)
@@ -1,3 +1,13 @@
+2016-01-21  Jeff Law  <law@redhat.com>
+
+       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  <dje.gcc@gmail.com>
 
        * configure.ac (gcc_cv_as_powerpc_mfcrf, gcc_cv_as_machine_directive):
index 3eeaa9c..84c9a6a 100644 (file)
@@ -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,
index 8d8aa30..8be57a0 100644 (file)
@@ -142,7 +142,7 @@ fsm_find_control_statement_thread_paths (tree name,
       int e_count = 0;
       edge_iterator ei;
       vec<basic_block, va_gc> *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<basic_block, va_gc> *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<basic_block> *visited_bbs = new hash_set<basic_block>;