cfghooks.h (create_basic_block): Replace with two overloads for RTL and GIMPLE.
authorRichard Biener <rguenther@suse.de>
Tue, 21 Apr 2015 11:40:46 +0000 (11:40 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 21 Apr 2015 11:40:46 +0000 (11:40 +0000)
2015-04-21  Richard Biener  <rguenther@suse.de>

* cfghooks.h (create_basic_block): Replace with two overloads
for RTL and GIMPLE.
(split_block): Likewise.
* cfghooks.c (split_block): Rename to ...
(split_block_1): ... this.
(split_block): Add two type-safe overloads for RTL and GIMPLE.
(split_block_after_labels): Call split_block_1.
(create_basic_block): Rename to ...
(create_basic_block_1): ... this.
(create_basic_block): Add two type-safe overloads for RTL and GIMPLE.
(create_empty_bb): Call create_basic_block_1.
* cfgrtl.c (fixup_fallthru_exit_predecessor): Use
split_block_after_labels.
* omp-low.c (expand_parallel_call): Likewise.
(expand_omp_target): Likewise.
(simd_clone_adjust): Likewise.
* tree-chkp.c (chkp_get_entry_block): Likewise.
* cgraphunit.c (init_lowered_empty_function): Use the GIMPLE
create_basic_block overload.
(cgraph_node::expand_thunk): Likewise.
* tree-cfg.c (make_blocks): Likewise.
(handle_abnormal_edges): Likewise.
* tree-inline.c (copy_bb): Likewise.

From-SVN: r222264

gcc/ChangeLog
gcc/cfghooks.c
gcc/cfghooks.h
gcc/cfgrtl.c
gcc/cgraphunit.c
gcc/omp-low.c
gcc/tree-cfg.c
gcc/tree-chkp.c
gcc/tree-inline.c

index 2a982b1bd7f0fe0eb96c86e5e5af17366ad4f5c0..6970232d8d16b569136a4b9ea8aef8e47555386d 100644 (file)
@@ -1,3 +1,29 @@
+2015-04-21  Richard Biener  <rguenther@suse.de>
+
+       * cfghooks.h (create_basic_block): Replace with two overloads
+       for RTL and GIMPLE.
+       (split_block): Likewise.
+       * cfghooks.c (split_block): Rename to ...
+       (split_block_1): ... this.
+       (split_block): Add two type-safe overloads for RTL and GIMPLE.
+       (split_block_after_labels): Call split_block_1.
+       (create_basic_block): Rename to ...
+       (create_basic_block_1): ... this.
+       (create_basic_block): Add two type-safe overloads for RTL and GIMPLE.
+       (create_empty_bb): Call create_basic_block_1.
+       * cfgrtl.c (fixup_fallthru_exit_predecessor): Use
+       split_block_after_labels.
+       * omp-low.c (expand_parallel_call): Likewise.
+       (expand_omp_target): Likewise.
+       (simd_clone_adjust): Likewise.
+       * tree-chkp.c (chkp_get_entry_block): Likewise.
+       * cgraphunit.c (init_lowered_empty_function): Use the GIMPLE
+       create_basic_block overload.
+       (cgraph_node::expand_thunk): Likewise.
+       * tree-cfg.c (make_blocks): Likewise.
+       (handle_abnormal_edges): Likewise.
+       * tree-inline.c (copy_bb): Likewise.
+
 2015-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
        * config/aarch64/aarch64.md (*<NLOGICAL:optab>_one_cmplsidi3_ze):
index abeab8cf1a5d529c8057eff659a1bb49e2249af2..fc23edbd8820003ff12346952a3fd5e2cd5e8aba 100644 (file)
@@ -505,8 +505,8 @@ redirect_edge_and_branch_force (edge e, basic_block dest)
    the labels).  If I is NULL, splits just after labels.  The newly created edge
    is returned.  The new basic block is created just after the old one.  */
 
-edge
-split_block (basic_block bb, void *i)
+static edge
+split_block_1 (basic_block bb, void *i)
 {
   basic_block new_bb;
   edge res;
@@ -550,12 +550,24 @@ split_block (basic_block bb, void *i)
   return res;
 }
 
+edge
+split_block (basic_block bb, gimple i)
+{
+  return split_block_1 (bb, i);
+}
+
+edge
+split_block (basic_block bb, rtx i)
+{
+  return split_block_1 (bb, i);
+}
+
 /* Splits block BB just after labels.  The newly created edge is returned.  */
 
 edge
 split_block_after_labels (basic_block bb)
 {
-  return split_block (bb, NULL);
+  return split_block_1 (bb, NULL);
 }
 
 /* Moves block BB immediately after block AFTER.  Returns false if the
@@ -696,8 +708,8 @@ split_edge (edge e)
    HEAD and END are the first and the last statement belonging
    to the block.  If both are NULL, an empty block is created.  */
 
-basic_block
-create_basic_block (void *head, void *end, basic_block after)
+static basic_block
+create_basic_block_1 (void *head, void *end, basic_block after)
 {
   basic_block ret;
 
@@ -714,12 +726,25 @@ create_basic_block (void *head, void *end, basic_block after)
   return ret;
 }
 
+basic_block
+create_basic_block (gimple_seq seq, basic_block after)
+{
+  return create_basic_block_1 (seq, NULL, after);
+}
+
+basic_block
+create_basic_block (rtx head, rtx end, basic_block after)
+{
+  return create_basic_block_1 (head, end, after);
+}
+
+
 /* Creates an empty basic block just after basic block AFTER.  */
 
 basic_block
 create_empty_bb (basic_block after)
 {
-  return create_basic_block (NULL, NULL, after);
+  return create_basic_block_1 (NULL, NULL, after);
 }
 
 /* Checks whether we may merge blocks BB1 and BB2.  */
index 4a1340e392c07a4e0dfb9935cde9ad4d4a4be5c8..a8fbe5d8d303ba53859731d5ed404d502fb2a591 100644 (file)
@@ -196,12 +196,14 @@ extern edge redirect_edge_succ_nodup (edge, basic_block);
 extern bool can_remove_branch_p (const_edge);
 extern void remove_branch (edge);
 extern void remove_edge (edge);
-extern edge split_block (basic_block, void *);
+extern edge split_block (basic_block, rtx);
+extern edge split_block (basic_block, gimple);
 extern edge split_block_after_labels (basic_block);
 extern bool move_block_after (basic_block, basic_block);
 extern void delete_basic_block (basic_block);
 extern basic_block split_edge (edge);
-extern basic_block create_basic_block (void *, void *, basic_block);
+extern basic_block create_basic_block (rtx, rtx, basic_block);
+extern basic_block create_basic_block (gimple_seq, basic_block);
 extern basic_block create_empty_bb (basic_block);
 extern bool can_merge_blocks_p (basic_block, basic_block);
 extern void merge_blocks (basic_block, basic_block);
index 46fd9588da50521db4a14c0444faf0b4a3286270..633c7626de64396de10d4eba1078c68f53d897ef 100644 (file)
@@ -4047,7 +4047,7 @@ fixup_fallthru_exit_predecessor (void)
         edge, we have to split that block.  */
       if (c == bb)
        {
-         bb = split_block (bb, NULL)->dest;
+         bb = split_block_after_labels (bb)->dest;
          bb->aux = c->aux;
          c->aux = bb;
          BB_FOOTER (bb) = BB_FOOTER (c);
index 2315ba84bb7c779d8f1a64a15956adabc20d84f3..0a50f61a384e2a939f024a66562c3373e4074de1 100644 (file)
@@ -1373,7 +1373,7 @@ init_lowered_empty_function (tree decl, bool in_ssa, gcov_type count)
   ENTRY_BLOCK_PTR_FOR_FN (cfun)->frequency = REG_BR_PROB_BASE;
   EXIT_BLOCK_PTR_FOR_FN (cfun)->count = count;
   EXIT_BLOCK_PTR_FOR_FN (cfun)->frequency = REG_BR_PROB_BASE;
-  bb = create_basic_block (NULL, (void *) 0, ENTRY_BLOCK_PTR_FOR_FN (cfun));
+  bb = create_basic_block (NULL, ENTRY_BLOCK_PTR_FOR_FN (cfun));
   bb->count = count;
   bb->frequency = BB_FREQ_MAX;
   e = make_edge (ENTRY_BLOCK_PTR_FOR_FN (cfun), bb, EDGE_FALLTHRU);
@@ -1726,13 +1726,13 @@ cgraph_node::expand_thunk (bool output_asm_thunks, bool force_gimple_thunk)
                     protect against NULL.  We know there will be an
                     adjustment, because that's why we're emitting a
                     thunk.  */
-                 then_bb = create_basic_block (NULL, (void *) 0, bb);
+                 then_bb = create_basic_block (NULL, bb);
                  then_bb->count = count - count / 16;
                  then_bb->frequency = BB_FREQ_MAX - BB_FREQ_MAX / 16;
-                 return_bb = create_basic_block (NULL, (void *) 0, then_bb);
+                 return_bb = create_basic_block (NULL, then_bb);
                  return_bb->count = count;
                  return_bb->frequency = BB_FREQ_MAX;
-                 else_bb = create_basic_block (NULL, (void *) 0, else_bb);
+                 else_bb = create_basic_block (NULL, else_bb);
                  then_bb->count = count / 16;
                  then_bb->frequency = BB_FREQ_MAX / 16;
                  add_bb_to_loop (then_bb, bb->loop_father);
index 835ff71391f379fe5b421fef2a262b838c8bdb3c..34e2e5c9ef1118f02a1dd108549c5a8dece31ba4 100644 (file)
@@ -4937,7 +4937,7 @@ expand_parallel_call (struct omp_region *region, basic_block bb,
              tmp_join = tmp_var;
            }
 
-         e = split_block (bb, NULL);
+         e = split_block_after_labels (bb);
          cond_bb = e->src;
          bb = e->dest;
          remove_edge (e);
@@ -9052,7 +9052,7 @@ expand_omp_target (struct omp_region *region)
 
       tmp_var = create_tmp_var (TREE_TYPE (device));
       if (offloaded)
-       e = split_block (new_bb, NULL);
+       e = split_block_after_labels (new_bb);
       else
        {
          gsi = gsi_last_bb (new_bb);
@@ -13339,7 +13339,7 @@ simd_clone_adjust (struct cgraph_node *node)
   e = split_block (incr_bb, gsi_stmt (gsi));
   basic_block latch_bb = e->dest;
   basic_block new_exit_bb;
-  new_exit_bb = split_block (latch_bb, NULL)->dest;
+  new_exit_bb = split_block_after_labels (latch_bb)->dest;
   loop->latch = latch_bb;
 
   redirect_edge_succ (FALLTHRU_EDGE (latch_bb), body_bb);
index 492962957f3ba8ddb2e45bac161c7a0081c8e6bf..988ab2af91b71efdcf496ec790d3ba0b6021203d 100644 (file)
@@ -542,7 +542,7 @@ make_blocks_1 (gimple_seq seq, basic_block bb)
        {
          if (!first_stmt_of_seq)
            gsi_split_seq_before (&i, &seq);
-         bb = create_basic_block (seq, NULL, bb);
+         bb = create_basic_block (seq, bb);
          start_new_block = false;
        }
 
@@ -748,7 +748,7 @@ handle_abnormal_edges (basic_block *dispatcher_bbs,
        }
 
       /* Create the dispatcher bb.  */
-      *dispatcher = create_basic_block (NULL, NULL, for_bb);
+      *dispatcher = create_basic_block (NULL, for_bb);
       if (computed_goto)
        {
          /* Factor computed gotos into a common computed goto site.  Also
index ebb9a836e5e7883567d3d5fb60dccc39ad0d8b98..288470bbe576d8be4780babf76af58f949efa560 100644 (file)
@@ -1071,7 +1071,8 @@ static basic_block
 chkp_get_entry_block (void)
 {
   if (!entry_block)
-    entry_block = split_block (ENTRY_BLOCK_PTR_FOR_FN (cfun), NULL)->dest;
+    entry_block
+      = split_block_after_labels (ENTRY_BLOCK_PTR_FOR_FN (cfun))->dest;
 
   return entry_block;
 }
index 42ddb9f47ed8df99a0ee82226f6549533b9d9b0b..71d75d9df513fe1e548ec0f0b1af856dbad86a18 100644 (file)
@@ -1761,8 +1761,7 @@ copy_bb (copy_body_data *id, basic_block bb, int frequency_scale,
 
   /* create_basic_block() will append every new block to
      basic_block_info automatically.  */
-  copy_basic_block = create_basic_block (NULL, (void *) 0,
-                                         (basic_block) prev->aux);
+  copy_basic_block = create_basic_block (NULL, (basic_block) prev->aux);
   copy_basic_block->count = apply_scale (bb->count, count_scale);
 
   /* We are going to rebuild frequencies from scratch.  These values