summaryrefslogtreecommitdiff
path: root/gcc/tree-flow-inline.h
diff options
context:
space:
mode:
authorrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>2007-04-23 23:15:54 +0000
committerrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>2007-04-23 23:15:54 +0000
commitc23dad79cc8aca9ce5f7d916a84f73905c326820 (patch)
tree916f5481a2d49b54e7ca5e6359ffeb9231fdbe30 /gcc/tree-flow-inline.h
parent401ed9a810e9f4a96a2be6caf742cd6776498a8b (diff)
downloadgcc-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.h50
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;
}