aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r--gcc/tree-cfg.c41
1 files changed, 28 insertions, 13 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 2de19c4..4eab1fd 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -114,26 +114,41 @@ static edge find_taken_edge_switch_expr (basic_block, tree);
static tree find_case_label_for_value (tree, tree);
void
-init_empty_tree_cfg (void)
+init_empty_tree_cfg_for_function (struct function *fn)
{
/* Initialize the basic block array. */
- init_flow ();
- profile_status = PROFILE_ABSENT;
- n_basic_blocks = NUM_FIXED_BLOCKS;
- last_basic_block = NUM_FIXED_BLOCKS;
- basic_block_info = VEC_alloc (basic_block, gc, initial_cfg_capacity);
- VEC_safe_grow_cleared (basic_block, gc, basic_block_info,
+ init_flow (fn);
+ profile_status_for_function (fn) = PROFILE_ABSENT;
+ n_basic_blocks_for_function (fn) = NUM_FIXED_BLOCKS;
+ last_basic_block_for_function (fn) = NUM_FIXED_BLOCKS;
+ basic_block_info_for_function (fn)
+ = VEC_alloc (basic_block, gc, initial_cfg_capacity);
+ VEC_safe_grow_cleared (basic_block, gc,
+ basic_block_info_for_function (fn),
initial_cfg_capacity);
/* Build a mapping of labels to their associated blocks. */
- label_to_block_map = VEC_alloc (basic_block, gc, initial_cfg_capacity);
- VEC_safe_grow_cleared (basic_block, gc, label_to_block_map,
+ label_to_block_map_for_function (fn)
+ = VEC_alloc (basic_block, gc, initial_cfg_capacity);
+ VEC_safe_grow_cleared (basic_block, gc,
+ label_to_block_map_for_function (fn),
initial_cfg_capacity);
- SET_BASIC_BLOCK (ENTRY_BLOCK, ENTRY_BLOCK_PTR);
- SET_BASIC_BLOCK (EXIT_BLOCK, EXIT_BLOCK_PTR);
- ENTRY_BLOCK_PTR->next_bb = EXIT_BLOCK_PTR;
- EXIT_BLOCK_PTR->prev_bb = ENTRY_BLOCK_PTR;
+ SET_BASIC_BLOCK_FOR_FUNCTION (fn, ENTRY_BLOCK,
+ ENTRY_BLOCK_PTR_FOR_FUNCTION (fn));
+ SET_BASIC_BLOCK_FOR_FUNCTION (fn, EXIT_BLOCK,
+ EXIT_BLOCK_PTR_FOR_FUNCTION (fn));
+
+ ENTRY_BLOCK_PTR_FOR_FUNCTION (fn)->next_bb
+ = EXIT_BLOCK_PTR_FOR_FUNCTION (fn);
+ EXIT_BLOCK_PTR_FOR_FUNCTION (fn)->prev_bb
+ = ENTRY_BLOCK_PTR_FOR_FUNCTION (fn);
+}
+
+void
+init_empty_tree_cfg (void)
+{
+ init_empty_tree_cfg_for_function (cfun);
}
/*---------------------------------------------------------------------------