diff options
Diffstat (limited to 'gcc/tree-ssa-tail-merge.c')
-rw-r--r-- | gcc/tree-ssa-tail-merge.c | 100 |
1 files changed, 48 insertions, 52 deletions
diff --git a/gcc/tree-ssa-tail-merge.c b/gcc/tree-ssa-tail-merge.c index 487961e..579bcb2 100644 --- a/gcc/tree-ssa-tail-merge.c +++ b/gcc/tree-ssa-tail-merge.c @@ -222,7 +222,7 @@ along with GCC; see the file COPYING3. If not see Additionally, the hash value for the struct is cached in hashval, and in_worklist indicates whether it's currently part of worklist. */ -struct same_succ_def : pointer_hash <same_succ_def> +struct same_succ : pointer_hash <same_succ> { /* The bbs that have the same successor bbs. */ bitmap bbs; @@ -239,24 +239,22 @@ struct same_succ_def : pointer_hash <same_succ_def> hashval_t hashval; /* hash_table support. */ - static inline hashval_t hash (const same_succ_def *); - static int equal (const same_succ_def *, const same_succ_def *); - static void remove (same_succ_def *); + static inline hashval_t hash (const same_succ *); + static int equal (const same_succ *, const same_succ *); + static void remove (same_succ *); }; -typedef struct same_succ_def *same_succ; -typedef const struct same_succ_def *const_same_succ; /* hash routine for hash_table support, returns hashval of E. */ inline hashval_t -same_succ_def::hash (const same_succ_def *e) +same_succ::hash (const same_succ *e) { return e->hashval; } /* A group of bbs where 1 bb from bbs can replace the other bbs. */ -struct bb_cluster_def +struct bb_cluster { /* The bbs in the cluster. */ bitmap bbs; @@ -267,8 +265,6 @@ struct bb_cluster_def /* The bb to replace the cluster with. */ basic_block rep_bb; }; -typedef struct bb_cluster_def *bb_cluster; -typedef const struct bb_cluster_def *const_bb_cluster; /* Per bb-info. */ @@ -277,9 +273,9 @@ struct aux_bb_info /* The number of non-debug statements in the bb. */ int size; /* The same_succ that this bb is a member of. */ - same_succ bb_same_succ; + same_succ *bb_same_succ; /* The cluster that this bb is a member of. */ - bb_cluster cluster; + bb_cluster *cluster; /* The vop state at the exit of a bb. This is shortlived data, used to communicate data between update_block_by and update_vuses. */ tree vop_at_exit; @@ -383,7 +379,7 @@ gvn_uses_equal (tree val1, tree val2) /* Prints E to FILE. */ static void -same_succ_print (FILE *file, const same_succ e) +same_succ_print (FILE *file, const same_succ *e) { unsigned int i; bitmap_print (file, e->bbs, "bbs:", "\n"); @@ -398,9 +394,9 @@ same_succ_print (FILE *file, const same_succ e) /* Prints same_succ VE to VFILE. */ inline int -ssa_same_succ_print_traverse (same_succ *pe, FILE *file) +ssa_same_succ_print_traverse (same_succ **pe, FILE *file) { - const same_succ e = *pe; + const same_succ *e = *pe; same_succ_print (file, e); return 1; } @@ -445,7 +441,7 @@ stmt_update_dep_bb (gimple *stmt) /* Calculates hash value for same_succ VE. */ static hashval_t -same_succ_hash (const_same_succ e) +same_succ_hash (const same_succ *e) { inchash::hash hstate (bitmap_hash (e->succs)); int flags; @@ -523,7 +519,7 @@ same_succ_hash (const_same_succ e) the other edge flags. */ static bool -inverse_flags (const_same_succ e1, const_same_succ e2) +inverse_flags (const same_succ *e1, const same_succ *e2) { int f1a, f1b, f2a, f2b; int mask = ~(EDGE_TRUE_VALUE | EDGE_FALSE_VALUE); @@ -545,7 +541,7 @@ inverse_flags (const_same_succ e1, const_same_succ e2) /* Compares SAME_SUCCs E1 and E2. */ int -same_succ_def::equal (const same_succ_def *e1, const same_succ_def *e2) +same_succ::equal (const same_succ *e1, const same_succ *e2) { unsigned int i, first1, first2; gimple_stmt_iterator gsi1, gsi2; @@ -600,10 +596,10 @@ same_succ_def::equal (const same_succ_def *e1, const same_succ_def *e2) /* Alloc and init a new SAME_SUCC. */ -static same_succ +static same_succ * same_succ_alloc (void) { - same_succ same = XNEW (struct same_succ_def); + same_succ *same = XNEW (struct same_succ); same->bbs = BITMAP_ALLOC (NULL); same->succs = BITMAP_ALLOC (NULL); @@ -617,7 +613,7 @@ same_succ_alloc (void) /* Delete same_succ E. */ void -same_succ_def::remove (same_succ e) +same_succ::remove (same_succ *e) { BITMAP_FREE (e->bbs); BITMAP_FREE (e->succs); @@ -630,7 +626,7 @@ same_succ_def::remove (same_succ e) /* Reset same_succ SAME. */ static void -same_succ_reset (same_succ same) +same_succ_reset (same_succ *same) { bitmap_clear (same->bbs); bitmap_clear (same->succs); @@ -638,7 +634,7 @@ same_succ_reset (same_succ same) same->succ_flags.truncate (0); } -static hash_table<same_succ_def> *same_succ_htab; +static hash_table<same_succ> *same_succ_htab; /* Array that is used to store the edge flags for a successor. */ @@ -665,7 +661,7 @@ debug_same_succ ( void) /* Vector of bbs to process. */ -static vec<same_succ> worklist; +static vec<same_succ *> worklist; /* Prints worklist to FILE. */ @@ -680,7 +676,7 @@ print_worklist (FILE *file) /* Adds SAME to worklist. */ static void -add_to_worklist (same_succ same) +add_to_worklist (same_succ *same) { if (same->in_worklist) return; @@ -695,12 +691,12 @@ add_to_worklist (same_succ same) /* Add BB to same_succ_htab. */ static void -find_same_succ_bb (basic_block bb, same_succ *same_p) +find_same_succ_bb (basic_block bb, same_succ **same_p) { unsigned int j; bitmap_iterator bj; - same_succ same = *same_p; - same_succ *slot; + same_succ *same = *same_p; + same_succ **slot; edge_iterator ei; edge e; @@ -750,7 +746,7 @@ find_same_succ_bb (basic_block bb, same_succ *same_p) static void find_same_succ (void) { - same_succ same = same_succ_alloc (); + same_succ *same = same_succ_alloc (); basic_block bb; FOR_EACH_BB_FN (bb, cfun) @@ -760,7 +756,7 @@ find_same_succ (void) same = same_succ_alloc (); } - same_succ_def::remove (same); + same_succ::remove (same); } /* Initializes worklist administration. */ @@ -769,7 +765,7 @@ static void init_worklist (void) { alloc_aux_for_blocks (sizeof (struct aux_bb_info)); - same_succ_htab = new hash_table<same_succ_def> (n_basic_blocks_for_fn (cfun)); + same_succ_htab = new hash_table<same_succ> (n_basic_blocks_for_fn (cfun)); same_succ_edge_flags = XCNEWVEC (int, last_basic_block_for_fn (cfun)); deleted_bbs = BITMAP_ALLOC (NULL); deleted_bb_preds = BITMAP_ALLOC (NULL); @@ -817,7 +813,7 @@ mark_basic_block_deleted (basic_block bb) static void same_succ_flush_bb (basic_block bb) { - same_succ same = BB_SAME_SUCC (bb); + same_succ *same = BB_SAME_SUCC (bb); BB_SAME_SUCC (bb) = NULL; if (bitmap_single_bit_set_p (same->bbs)) same_succ_htab->remove_elt_with_hash (same, same->hashval); @@ -875,7 +871,7 @@ update_worklist (void) unsigned int i; bitmap_iterator bi; basic_block bb; - same_succ same; + same_succ *same; bitmap_and_compl_into (deleted_bb_preds, deleted_bbs); bitmap_clear (deleted_bbs); @@ -892,14 +888,14 @@ update_worklist (void) if (same == NULL) same = same_succ_alloc (); } - same_succ_def::remove (same); + same_succ::remove (same); bitmap_clear (deleted_bb_preds); } /* Prints cluster C to FILE. */ static void -print_cluster (FILE *file, bb_cluster c) +print_cluster (FILE *file, bb_cluster *c) { if (c == NULL) return; @@ -909,9 +905,9 @@ print_cluster (FILE *file, bb_cluster c) /* Prints cluster C to stderr. */ -extern void debug_cluster (bb_cluster); +extern void debug_cluster (bb_cluster *); DEBUG_FUNCTION void -debug_cluster (bb_cluster c) +debug_cluster (bb_cluster *c) { print_cluster (stderr, c); } @@ -919,7 +915,7 @@ debug_cluster (bb_cluster c) /* Update C->rep_bb, given that BB is added to the cluster. */ static void -update_rep_bb (bb_cluster c, basic_block bb) +update_rep_bb (bb_cluster *c, basic_block bb) { /* Initial. */ if (c->rep_bb == NULL) @@ -953,7 +949,7 @@ update_rep_bb (bb_cluster c, basic_block bb) /* Add BB to cluster C. Sets BB in C->bbs, and preds of BB in C->preds. */ static void -add_bb_to_cluster (bb_cluster c, basic_block bb) +add_bb_to_cluster (bb_cluster *c, basic_block bb) { edge e; edge_iterator ei; @@ -968,11 +964,11 @@ add_bb_to_cluster (bb_cluster c, basic_block bb) /* Allocate and init new cluster. */ -static bb_cluster +static bb_cluster * new_cluster (void) { - bb_cluster c; - c = XCNEW (struct bb_cluster_def); + bb_cluster *c; + c = XCNEW (bb_cluster); c->bbs = BITMAP_ALLOC (NULL); c->preds = BITMAP_ALLOC (NULL); c->rep_bb = NULL; @@ -982,7 +978,7 @@ new_cluster (void) /* Delete clusters. */ static void -delete_cluster (bb_cluster c) +delete_cluster (bb_cluster *c) { if (c == NULL) return; @@ -994,7 +990,7 @@ delete_cluster (bb_cluster c) /* Array that contains all clusters. */ -static vec<bb_cluster> all_clusters; +static vec<bb_cluster *> all_clusters; /* Allocate all cluster vectors. */ @@ -1032,7 +1028,7 @@ delete_cluster_vectors (void) /* Merge cluster C2 into C1. */ static void -merge_clusters (bb_cluster c1, bb_cluster c2) +merge_clusters (bb_cluster *c1, bb_cluster *c2) { bitmap_ior_into (c1->bbs, c2->bbs); bitmap_ior_into (c1->preds, c2->preds); @@ -1045,7 +1041,7 @@ static void set_cluster (basic_block bb1, basic_block bb2) { basic_block merge_bb, other_bb; - bb_cluster merge, old, c; + bb_cluster *merge, *old, *c; if (BB_CLUSTER (bb1) == NULL && BB_CLUSTER (bb2) == NULL) { @@ -1105,7 +1101,7 @@ gimple_operand_equal_value_p (tree t1, tree t2) gimple_bb (s2) are members of SAME_SUCC. */ static bool -gimple_equal_p (same_succ same_succ, gimple *s1, gimple *s2) +gimple_equal_p (same_succ *same_succ, gimple *s1, gimple *s2) { unsigned int i; tree lhs1, lhs2; @@ -1225,7 +1221,7 @@ gsi_advance_bw_nondebug_nonlocal (gimple_stmt_iterator *gsi, tree *vuse, clusters them. */ static void -find_duplicate (same_succ same_succ, basic_block bb1, basic_block bb2) +find_duplicate (same_succ *same_succ, basic_block bb1, basic_block bb2) { gimple_stmt_iterator gsi1 = gsi_last_nondebug_bb (bb1); gimple_stmt_iterator gsi2 = gsi_last_nondebug_bb (bb2); @@ -1307,7 +1303,7 @@ same_phi_alternatives_1 (basic_block dest, edge e1, edge e2) phi alternatives for BB1 and BB2 are equal. */ static bool -same_phi_alternatives (same_succ same_succ, basic_block bb1, basic_block bb2) +same_phi_alternatives (same_succ *same_succ, basic_block bb1, basic_block bb2) { unsigned int s; bitmap_iterator bs; @@ -1392,7 +1388,7 @@ deps_ok_for_redirect (basic_block bb1, basic_block bb2) /* Within SAME_SUCC->bbs, find clusters of bbs which can be merged. */ static void -find_clusters_1 (same_succ same_succ) +find_clusters_1 (same_succ *same_succ) { basic_block bb1, bb2; unsigned int i, j; @@ -1444,7 +1440,7 @@ find_clusters_1 (same_succ same_succ) static void find_clusters (void) { - same_succ same; + same_succ *same; while (!worklist.is_empty ()) { @@ -1556,7 +1552,7 @@ static int apply_clusters (void) { basic_block bb1, bb2; - bb_cluster c; + bb_cluster *c; unsigned int i, j; bitmap_iterator bj; int nr_bbs_removed = 0; |