diff options
author | Diego Novillo <dnovillo@gcc.gnu.org> | 2008-05-16 09:36:26 -0400 |
---|---|---|
committer | Diego Novillo <dnovillo@gcc.gnu.org> | 2008-05-16 09:36:26 -0400 |
commit | 9defb1fe37d0ff78a3a8f4729e4f51a957ec902e (patch) | |
tree | 83954b55280032f81a5047d421f35181d5f9ce50 /gcc/tree-cfg.c | |
parent | 3e894af1569a84c5bb6eb730266248e6a4cae2de (diff) | |
download | gcc-9defb1fe37d0ff78a3a8f4729e4f51a957ec902e.zip gcc-9defb1fe37d0ff78a3a8f4729e4f51a957ec902e.tar.gz gcc-9defb1fe37d0ff78a3a8f4729e4f51a957ec902e.tar.bz2 |
[multiple changes]
2008-05-16 Nathan Froyd <froydnj@codesourcery.com>
* tree-flow.h (init_empty_tree_cfg_for_function): Declare.
* tree-cfg.c (init_empty_tree_cfg_for_function): Define.
(init_empty_tree_cfg): Call it.
2008-05-16 Kenneth Zadeck <zadeck@naturalbridge.com>
* cfg.c (init_flow): Add argument THE_FUN. Use it
instead of cfun. Update all users.
From-SVN: r135418
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r-- | gcc/tree-cfg.c | 41 |
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); } /*--------------------------------------------------------------------------- |