diff options
author | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-04-23 23:15:54 +0000 |
---|---|---|
committer | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-04-23 23:15:54 +0000 |
commit | c23dad79cc8aca9ce5f7d916a84f73905c326820 (patch) | |
tree | 916f5481a2d49b54e7ca5e6359ffeb9231fdbe30 /gcc/tree-flow-inline.h | |
parent | 401ed9a810e9f4a96a2be6caf742cd6776498a8b (diff) | |
download | gcc-c23dad79cc8aca9ce5f7d916a84f73905c326820.tar.gz |
* tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
Use phi_nodes_ptr.
(create_phi_node): Use set_phi_nodes.
* omp-low.c (expand_omp_parallel): Use bb_stmt_list.
* tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
(combine_blocks): Use bb_stmt_list and set_bb_stmt_list.
* tree-flow-inline.h (phi_nodes, set_phi_nodes,
(bsi_start, bsi_last): Use bb_stmt_list.
(phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
* cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
Traverse the statements using tsi iterator.
* basic-block.h (struct basic_block_def): Fields stmt_list
and phi_nodes moved to ...
(struct tree_bb_info): ... new structure.
* tree-cfg.c (create_bb): Allocate il.tree. Use set_bb_stmt_list.
(tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
(remove_bb): Handle blocks with NULL stmt list. Clear il.tree field.
(tree_verify_flow_info): Verify that il.tree is not set for
entry and exit block.
(tree_split_block): Use set_bb_stmt_list.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124086 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-flow-inline.h')
-rw-r--r-- | gcc/tree-flow-inline.h | 50 |
1 files changed, 40 insertions, 10 deletions
diff --git a/gcc/tree-flow-inline.h b/gcc/tree-flow-inline.h index 054ddfa28ad..dc4b2d16a51 100644 --- a/gcc/tree-flow-inline.h +++ b/gcc/tree-flow-inline.h @@ -637,7 +637,19 @@ addresses_taken (tree stmt) static inline tree phi_nodes (basic_block bb) { - return bb->phi_nodes; + gcc_assert (!(bb->flags & BB_RTL)); + if (!bb->il.tree) + return NULL; + return bb->il.tree->phi_nodes; +} + +/* Return pointer to the list of PHI nodes for basic block BB. */ + +static inline tree * +phi_nodes_ptr (basic_block bb) +{ + gcc_assert (!(bb->flags & BB_RTL)); + return &bb->il.tree->phi_nodes; } /* Set list of phi nodes of a basic block BB to L. */ @@ -647,7 +659,8 @@ set_phi_nodes (basic_block bb, tree l) { tree phi; - bb->phi_nodes = l; + gcc_assert (!(bb->flags & BB_RTL)); + bb->il.tree->phi_nodes = l; for (phi = l; phi; phi = PHI_CHAIN (phi)) set_bb_for_stmt (phi, bb); } @@ -746,20 +759,37 @@ phi_ssa_name_p (tree t) /* ----------------------------------------------------------------------- */ +/* Returns the list of statements in BB. */ + +static inline tree +bb_stmt_list (basic_block bb) +{ + gcc_assert (!(bb->flags & BB_RTL)); + return bb->il.tree->stmt_list; +} + +/* Sets the list of statements in BB to LIST. */ + +static inline void +set_bb_stmt_list (basic_block bb, tree list) +{ + gcc_assert (!(bb->flags & BB_RTL)); + bb->il.tree->stmt_list = list; +} + /* Return a block_stmt_iterator that points to beginning of basic block BB. */ static inline block_stmt_iterator bsi_start (basic_block bb) { block_stmt_iterator bsi; - if (bb->stmt_list) - bsi.tsi = tsi_start (bb->stmt_list); - else + if (bb->index < NUM_FIXED_BLOCKS) { - gcc_assert (bb->index < NUM_FIXED_BLOCKS); bsi.tsi.ptr = NULL; bsi.tsi.container = NULL; } + else + bsi.tsi = tsi_start (bb_stmt_list (bb)); bsi.bb = bb; return bsi; } @@ -784,14 +814,14 @@ static inline block_stmt_iterator bsi_last (basic_block bb) { block_stmt_iterator bsi; - if (bb->stmt_list) - bsi.tsi = tsi_last (bb->stmt_list); - else + + if (bb->index < NUM_FIXED_BLOCKS) { - gcc_assert (bb->index < NUM_FIXED_BLOCKS); bsi.tsi.ptr = NULL; bsi.tsi.container = NULL; } + else + bsi.tsi = tsi_last (bb_stmt_list (bb)); bsi.bb = bb; return bsi; } |