diff options
author | David Malcolm <dmalcolm@redhat.com> | 2013-11-19 16:50:04 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2013-11-19 16:50:04 +0000 |
commit | dc936fb236f9e85b88a8f59e2d33af2b76b786f7 (patch) | |
tree | 0e4b37c013785f1d15280b4b88f14b5e0e90663e | |
parent | e0f396bc05ef40940f4f158209df176e6c120b1c (diff) | |
download | gcc-dc936fb236f9e85b88a8f59e2d33af2b76b786f7.zip gcc-dc936fb236f9e85b88a8f59e2d33af2b76b786f7.tar.gz gcc-dc936fb236f9e85b88a8f59e2d33af2b76b786f7.tar.bz2 |
Eliminate n_edges macro
* basic-block.h (n_edges_for_function): Rename macro to...
(n_edges_for_fn): ...this.
(n_edges): Eliminate macro as work towards making uses of
cfun be explicit.
* cfg.c (init_flow): Update for renaming of "n_edges_for_function"
to "n_edges_for_fn".
* cfg.c (unchecked_make_edge): Remove usage of n_edges macro.
(clear_edges): Likewise.
(free_edge): Likewise.
* cfghooks.c (dump_flow_info): Likewise.
* cprop.c (is_too_expensive): Likewise.
* df-core.c (df_worklist_dataflow_doublequeue): Likewise.
* gcse.c (is_too_expensive): Likewise.
(prune_insertions_deletions): Likewise.
* mcf.c (create_fixup_graph): Likewise.
* sched-rgn.c (haifa_find_rgns): Likewise.
* tree-cfg.c (gimple_dump_cfg): Likewise.
* var-tracking.c (variable_tracking_main_1): Likewise.
From-SVN: r205044
-rw-r--r-- | gcc/ChangeLog | 23 | ||||
-rw-r--r-- | gcc/basic-block.h | 3 | ||||
-rw-r--r-- | gcc/cfg.c | 8 | ||||
-rw-r--r-- | gcc/cfghooks.c | 2 | ||||
-rw-r--r-- | gcc/cprop.c | 4 | ||||
-rw-r--r-- | gcc/df-core.c | 2 | ||||
-rw-r--r-- | gcc/gcse.c | 8 | ||||
-rw-r--r-- | gcc/mcf.c | 9 | ||||
-rw-r--r-- | gcc/sched-rgn.c | 2 | ||||
-rw-r--r-- | gcc/tree-cfg.c | 3 | ||||
-rw-r--r-- | gcc/var-tracking.c | 2 |
11 files changed, 46 insertions, 20 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9740f62..91000ce 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,26 @@ +2013-11-19 David Malcolm <dmalcolm@redhat.com> + + * basic-block.h (n_edges_for_function): Rename macro to... + (n_edges_for_fn): ...this. + (n_edges): Eliminate macro as work towards making uses of + cfun be explicit. + + * cfg.c (init_flow): Update for renaming of "n_edges_for_function" + to "n_edges_for_fn". + + * cfg.c (unchecked_make_edge): Remove usage of n_edges macro. + (clear_edges): Likewise. + (free_edge): Likewise. + * cfghooks.c (dump_flow_info): Likewise. + * cprop.c (is_too_expensive): Likewise. + * df-core.c (df_worklist_dataflow_doublequeue): Likewise. + * gcse.c (is_too_expensive): Likewise. + (prune_insertions_deletions): Likewise. + * mcf.c (create_fixup_graph): Likewise. + * sched-rgn.c (haifa_find_rgns): Likewise. + * tree-cfg.c (gimple_dump_cfg): Likewise. + * var-tracking.c (variable_tracking_main_1): Likewise. + 2013-11-19 Marcus Shawcroft <marcus.shawcroft@arm.com> * config/aarch64/aarch64.c (aarch64_save_or_restore_fprs): Fix over diff --git a/gcc/basic-block.h b/gcc/basic-block.h index d247d4f..38391be 100644 --- a/gcc/basic-block.h +++ b/gcc/basic-block.h @@ -316,7 +316,7 @@ struct GTY(()) control_flow_graph { #define EXIT_BLOCK_PTR_FOR_FUNCTION(FN) ((FN)->cfg->x_exit_block_ptr) #define basic_block_info_for_function(FN) ((FN)->cfg->x_basic_block_info) #define n_basic_blocks_for_fn(FN) ((FN)->cfg->x_n_basic_blocks) -#define n_edges_for_function(FN) ((FN)->cfg->x_n_edges) +#define n_edges_for_fn(FN) ((FN)->cfg->x_n_edges) #define last_basic_block_for_function(FN) ((FN)->cfg->x_last_basic_block) #define label_to_block_map_for_function(FN) ((FN)->cfg->x_label_to_block_map) #define profile_status_for_function(FN) ((FN)->cfg->x_profile_status) @@ -330,7 +330,6 @@ struct GTY(()) control_flow_graph { #define ENTRY_BLOCK_PTR (cfun->cfg->x_entry_block_ptr) #define EXIT_BLOCK_PTR (cfun->cfg->x_exit_block_ptr) #define basic_block_info (cfun->cfg->x_basic_block_info) -#define n_edges (cfun->cfg->x_n_edges) #define last_basic_block (cfun->cfg->x_last_basic_block) #define label_to_block_map (cfun->cfg->x_label_to_block_map) #define profile_status (cfun->cfg->x_profile_status) @@ -69,7 +69,7 @@ init_flow (struct function *the_fun) { if (!the_fun->cfg) the_fun->cfg = ggc_alloc_cleared_control_flow_graph (); - n_edges_for_function (the_fun) = 0; + n_edges_for_fn (the_fun) = 0; ENTRY_BLOCK_PTR_FOR_FUNCTION (the_fun) = ggc_alloc_cleared_basic_block_def (); ENTRY_BLOCK_PTR_FOR_FUNCTION (the_fun)->index = ENTRY_BLOCK; @@ -88,7 +88,7 @@ init_flow (struct function *the_fun) static void free_edge (edge e) { - n_edges--; + n_edges_for_fn (cfun)--; ggc_free (e); } @@ -114,7 +114,7 @@ clear_edges (void) vec_safe_truncate (EXIT_BLOCK_PTR->preds, 0); vec_safe_truncate (ENTRY_BLOCK_PTR->succs, 0); - gcc_assert (!n_edges); + gcc_assert (!n_edges_for_fn (cfun)); } /* Allocate memory for basic_block. */ @@ -262,7 +262,7 @@ unchecked_make_edge (basic_block src, basic_block dst, int flags) { edge e; e = ggc_alloc_cleared_edge_def (); - n_edges++; + n_edges_for_fn (cfun)++; e->src = src; e->dest = dst; diff --git a/gcc/cfghooks.c b/gcc/cfghooks.c index 3016c54..20b90bf 100644 --- a/gcc/cfghooks.c +++ b/gcc/cfghooks.c @@ -324,7 +324,7 @@ dump_flow_info (FILE *file, int flags) basic_block bb; fprintf (file, "\n%d basic blocks, %d edges.\n", n_basic_blocks_for_fn (cfun), - n_edges); + n_edges_for_fn (cfun)); FOR_ALL_BB (bb) dump_bb (file, bb, 0, flags); diff --git a/gcc/cprop.c b/gcc/cprop.c index 78cfeba..35a44f2 100644 --- a/gcc/cprop.c +++ b/gcc/cprop.c @@ -1729,12 +1729,12 @@ is_too_expensive (const char *pass) which have a couple switch statements. Rather than simply threshold the number of blocks, uses something with a more graceful degradation. */ - if (n_edges > 20000 + n_basic_blocks_for_fn (cfun) * 4) + if (n_edges_for_fn (cfun) > 20000 + n_basic_blocks_for_fn (cfun) * 4) { warning (OPT_Wdisabled_optimization, "%s: %d basic blocks and %d edges/basic block", pass, n_basic_blocks_for_fn (cfun), - n_edges / n_basic_blocks_for_fn (cfun)); + n_edges_for_fn (cfun) / n_basic_blocks_for_fn (cfun)); return true; } diff --git a/gcc/df-core.c b/gcc/df-core.c index 20d6c4e..37876af 100644 --- a/gcc/df-core.c +++ b/gcc/df-core.c @@ -1097,7 +1097,7 @@ df_worklist_dataflow_doublequeue (struct dataflow *dataflow, fprintf (dump_file, "df_worklist_dataflow_doublequeue:" "n_basic_blocks %d n_edges %d" " count %d (%5.2g)\n", - n_basic_blocks_for_fn (cfun), n_edges, + n_basic_blocks_for_fn (cfun), n_edges_for_fn (cfun), dcount, dcount / (float)n_basic_blocks_for_fn (cfun)); } @@ -1964,7 +1964,7 @@ prune_insertions_deletions (int n_elems) /* Iterate over the edges counting the number of times each expression needs to be inserted. */ - for (i = 0; i < (unsigned) n_edges; i++) + for (i = 0; i < (unsigned) n_edges_for_fn (cfun); i++) { EXECUTE_IF_SET_IN_BITMAP (pre_insert_map[i], 0, j, sbi) insertions[j]++; @@ -1990,7 +1990,7 @@ prune_insertions_deletions (int n_elems) /* Now prune PRE_INSERT_MAP and PRE_DELETE_MAP based on PRUNE_EXPRS. */ EXECUTE_IF_SET_IN_BITMAP (prune_exprs, 0, j, sbi) { - for (i = 0; i < (unsigned) n_edges; i++) + for (i = 0; i < (unsigned) n_edges_for_fn (cfun); i++) bitmap_clear_bit (pre_insert_map[i], j); for (i = 0; i < (unsigned) last_basic_block; i++) @@ -4069,12 +4069,12 @@ is_too_expensive (const char *pass) which have a couple switch statements. Rather than simply threshold the number of blocks, uses something with a more graceful degradation. */ - if (n_edges > 20000 + n_basic_blocks_for_fn (cfun) * 4) + if (n_edges_for_fn (cfun) > 20000 + n_basic_blocks_for_fn (cfun) * 4) { warning (OPT_Wdisabled_optimization, "%s: %d basic blocks and %d edges/basic block", pass, n_basic_blocks_for_fn (cfun), - n_edges / n_basic_blocks_for_fn (cfun)); + n_edges_for_fn (cfun) / n_basic_blocks_for_fn (cfun)); return true; } @@ -472,11 +472,13 @@ create_fixup_graph (fixup_graph_type *fixup_graph) /* Each basic_block will be split into 2 during vertex transformation. */ int fnum_vertices_after_transform = 2 * n_basic_blocks_for_fn (cfun); - int fnum_edges_after_transform = n_edges + n_basic_blocks_for_fn (cfun); + int fnum_edges_after_transform = + n_edges_for_fn (cfun) + n_basic_blocks_for_fn (cfun); /* Count the new SOURCE and EXIT vertices to be added. */ int fmax_num_vertices = - fnum_vertices_after_transform + n_edges + n_basic_blocks_for_fn (cfun) + 2; + (fnum_vertices_after_transform + n_edges_for_fn (cfun) + + n_basic_blocks_for_fn (cfun) + 2); /* In create_fixup_graph: Each basic block and edge can be split into 3 edges. Number of balance edges = n_basic_blocks. So after @@ -486,7 +488,8 @@ create_fixup_graph (fixup_graph_type *fixup_graph) max_edges = 2 * (4 * n_basic_blocks + 3 * n_edges) = 8 * n_basic_blocks + 6 * n_edges < 8 * n_basic_blocks + 8 * n_edges. */ - int fmax_num_edges = 8 * (n_basic_blocks_for_fn (cfun) + n_edges); + int fmax_num_edges = 8 * (n_basic_blocks_for_fn (cfun) + + n_edges_for_fn (cfun)); /* Initial num of vertices in the fixup graph. */ fixup_graph->num_vertices = n_basic_blocks_for_fn (cfun); diff --git a/gcc/sched-rgn.c b/gcc/sched-rgn.c index 20c29c5..87042dd 100644 --- a/gcc/sched-rgn.c +++ b/gcc/sched-rgn.c @@ -643,7 +643,7 @@ haifa_find_rgns (void) /* Allocate and initialize variables for the first traversal. */ max_hdr = XNEWVEC (int, last_basic_block); dfs_nr = XCNEWVEC (int, last_basic_block); - stack = XNEWVEC (edge_iterator, n_edges); + stack = XNEWVEC (edge_iterator, n_edges_for_fn (cfun)); inner = sbitmap_alloc (last_basic_block); bitmap_ones (inner); diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index c30b113..d2af39e 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -2106,7 +2106,8 @@ gimple_dump_cfg (FILE *file, int flags) { dump_function_header (file, current_function_decl, flags); fprintf (file, ";; \n%d basic blocks, %d edges, last basic block %d.\n\n", - n_basic_blocks_for_fn (cfun), n_edges, last_basic_block); + n_basic_blocks_for_fn (cfun), n_edges_for_fn (cfun), + last_basic_block); brief_dump_cfg (file, flags | TDF_COMMENT); fprintf (file, "\n"); diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c index a569d46..cfda63a 100644 --- a/gcc/var-tracking.c +++ b/gcc/var-tracking.c @@ -10161,7 +10161,7 @@ variable_tracking_main_1 (void) } if (n_basic_blocks_for_fn (cfun) > 500 && - n_edges / n_basic_blocks_for_fn (cfun) >= 20) + n_edges_for_fn (cfun) / n_basic_blocks_for_fn (cfun) >= 20) { vt_debug_insns_local (true); return 0; |