summaryrefslogtreecommitdiff
path: root/gcc/cfghooks.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2015-04-21 11:40:46 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2015-04-21 11:40:46 +0000
commitc4d281b29a03c1e7637936434a04e9a419f22c00 (patch)
treec25284f96a167e670591c7a8289f962d38b6e60e /gcc/cfghooks.c
parent8409e468a5f94b7577ccfa073f8b859481a86800 (diff)
cfghooks.h (create_basic_block): Replace with two overloads for RTL and GIMPLE.
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
Diffstat (limited to 'gcc/cfghooks.c')
-rw-r--r--gcc/cfghooks.c37
1 files changed, 31 insertions, 6 deletions
diff --git a/gcc/cfghooks.c b/gcc/cfghooks.c
index abeab8cf1a5..fc23edbd882 100644
--- a/gcc/cfghooks.c
+++ b/gcc/cfghooks.c
@@ -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. */