bb-reorder: Split out STC
authorSegher Boessenkool <segher@kernel.crashing.org>
Thu, 1 Oct 2015 06:33:09 +0000 (08:33 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Thu, 1 Oct 2015 06:33:09 +0000 (08:33 +0200)
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.

From-SVN: r228316

gcc/ChangeLog
gcc/bb-reorder.c

index c132980b9f463293fdddd52cf49bfc2b24efe140..053e90232779f18a8209432c77f7634045274f89 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 2110bd2e0d814c39fc0b792437ee76df33425a42..725cdc3e6b0d890dcde81711c8861e6aeab8f589 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);