bb-reorder: Split out STC
authorsegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 1 Oct 2015 06:33:09 +0000 (06:33 +0000)
committersegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 1 Oct 2015 06:33:09 +0000 (06:33 +0000)
2015-09-23   Segher Boessenkool  <segher@kernel.crashing.org>

* bb-reorder.c (reorder_basic_blocks_software_trace_cache): New
function, factored out from ...
(reorder_basic_blocks): ... here.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228316 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/bb-reorder.c

index c132980..053e902 100644 (file)
@@ -1,3 +1,9 @@
+2015-10-01  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       * bb-reorder.c (reorder_basic_blocks_software_trace_cache): New
+       function, factored out from ...
+       (reorder_basic_blocks): ... here.
+
 2015-10-01  Tom de Vries  <tom@codesourcery.com>
 
        * tree-cfg.c (dump_function_to_file): Dump function attributes using
index 2110bd2..725cdc3 100644 (file)
@@ -2226,24 +2226,15 @@ update_crossing_jump_flags (void)
        }
 }
 
-/* Reorder basic blocks.  The main entry point to this file.  FLAGS is
-   the set of flags to pass to cfg_layout_initialize().  */
+/* Reorder basic blocks using the software trace cache (STC) algorithm.  */
 
 static void
-reorder_basic_blocks (void)
+reorder_basic_blocks_software_trace_cache (void)
 {
   int n_traces;
   int i;
   struct trace *traces;
 
-  gcc_assert (current_ir_type () == IR_RTL_CFGLAYOUT);
-
-  if (n_basic_blocks_for_fn (cfun) <= NUM_FIXED_BLOCKS + 1)
-    return;
-
-  set_edge_can_fallthru_flag ();
-  mark_dfs_back_edges ();
-
   /* We are estimating the length of uncond jump insn only once since the code
      for getting the insn length always returns the minimal length now.  */
   if (uncond_jump_length == 0)
@@ -2268,6 +2259,22 @@ reorder_basic_blocks (void)
   connect_traces (n_traces, traces);
   FREE (traces);
   FREE (bbd);
+}
+
+/* Reorder basic blocks.  The main entry point to this file.  */
+
+static void
+reorder_basic_blocks (void)
+{
+  gcc_assert (current_ir_type () == IR_RTL_CFGLAYOUT);
+
+  if (n_basic_blocks_for_fn (cfun) <= NUM_FIXED_BLOCKS + 1)
+    return;
+
+  set_edge_can_fallthru_flag ();
+  mark_dfs_back_edges ();
+
+  reorder_basic_blocks_software_trace_cache ();
 
   relink_block_chain (/*stay_in_cfglayout_mode=*/true);