summaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2005-04-12 21:33:53 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2005-04-12 21:33:53 +0000
commit7a22afabca32ad6744d7fd60c53e2f9d74bb9300 (patch)
tree172b7b8923ca5862deb02ac22abcd4d3155f0d6d /gcc/tree-cfg.c
parent2e8b5b1cfc84072db7ffc18ccbfa559a56a935eb (diff)
downloadgcc-7a22afabca32ad6744d7fd60c53e2f9d74bb9300.tar.gz
* Makefile.in: Add function.h to BASIC_BLOCK_H. Remove all
references to gt-tree-cfg.h. * basic-block.h (struct basic_block_def): Don't skip rbi for garbage collection. (struct reorder_block_def): Make GTY-able. (struct control_flow_graph): New structure. (n_edges, n_basic_blocks, last_basic_block, basic_block_info, BASIC_BLOCK, EXIT_BLOCK_PTR, ENTRY_BLOCK_PTR): No longer vars, but instead defines to the control_flow_graph for cfun. (label_to_block_map): New define, points to the label map of the control_flow_graph for cfun. (n_edges_for_function, n_basic_blocks_for_function, last_basic_block_for_function, basic_block_info_for_function, EXIT_BLOCK_PTR_FOR_FUNCTION, ENTRY_BLOCK_PTR_FOR_FUNCTION, basic_block_info_for_function, label_to_block_map_for_function): Counterparts for the above, taking a struct function as an extra argument. (alloc_rbi_pool, free_rbi_pool): Remove prototypes. * cfg.c: (n_edges, n_basic_blocks, last_basic_block, basic_block_info, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR): Remove. (alloc_rbi_pool, free_rbi_pool): Remove. (initialize_bb_rbi): Use ggc_alloc_cleared instead of pool_alloc. * cfglayout.c: (cfg_layout_initialize): Don't allocate the rbi pool here... (cfg_layout_finalize) ... and don't free it here. * cfgrtl.c (cfg_layout_delete_block): Zero out rbi so it gets garbage collected. * flow.c (free_basic_block_vars): Set label_to_block_map and n_edges to zero too. * function.h (struct function): Add cfg field. * function.c (allocate_struct_function): Allocate the cfg. * tree-cfg.c (label_to_block_map): Remove. (build_tree_cfg): Don't allocate the rbi pool here... (delete_tree_cfg_annotations): ...and don't free it here. Also don't nullify label_to_block_map for cfun. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@98048 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r--gcc/tree-cfg.c15
1 files changed, 2 insertions, 13 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 1ecf322a942..a9a9fdcab73 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -54,10 +54,6 @@ Boston, MA 02111-1307, USA. */
/* Initial capacity for the basic block array. */
static const int initial_cfg_capacity = 20;
-/* Mapping of labels to their associated blocks. This can greatly speed up
- building of the CFG in code with lots of gotos. */
-static GTY(()) varray_type label_to_block_map;
-
/* This hash table allows us to efficiently lookup all CASE_LABEL_EXPRs
which use a particular edge. The CASE_LABEL_EXPRs are chained together
via their TREE_CHAIN field, which we clear after we're done with the
@@ -150,9 +146,6 @@ build_tree_cfg (tree *tp)
/* Register specific tree functions. */
tree_register_cfg_hooks ();
- /* Initialize rbi_pool. */
- alloc_rbi_pool ();
-
/* Initialize the basic block array. */
init_flow ();
profile_status = PROFILE_ABSENT;
@@ -812,7 +805,7 @@ make_switch_expr_edges (basic_block bb)
/* Return the basic block holding label DEST. */
basic_block
-label_to_block (tree dest)
+label_to_block_fn (struct function *ifun, tree dest)
{
int uid = LABEL_DECL_UID (dest);
@@ -828,10 +821,9 @@ label_to_block (tree dest)
bsi_insert_before (&bsi, stmt, BSI_NEW_STMT);
uid = LABEL_DECL_UID (dest);
}
- return VARRAY_BB (label_to_block_map, uid);
+ return VARRAY_BB (ifun->cfg->x_label_to_block_map, uid);
}
-
/* Create edges for a goto statement at block BB. */
static void
@@ -2898,7 +2890,6 @@ delete_tree_cfg_annotations (void)
free_blocks_annotations ();
label_to_block_map = NULL;
- free_rbi_pool ();
FOR_EACH_BB (bb)
bb->rbi = NULL;
}
@@ -6052,5 +6043,3 @@ struct tree_opt_pass pass_warn_function_return =
0, /* todo_flags_finish */
0 /* letter */
};
-
-#include "gt-tree-cfg.h"