X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbecopyheur4.c;h=4b903b20d34698af8d01c0da502592c0a05118b0;hb=418806b20f02139f4506528f7d33390fadc61909;hp=bc33dd4e8a5140e87c2a2207a3728f4cb88f3f47;hpb=429d687f06baeeb63d04750f846d39e55fb62343;p=libfirm diff --git a/ir/be/becopyheur4.c b/ir/be/becopyheur4.c index bc33dd4e8..4b903b20d 100644 --- a/ir/be/becopyheur4.c +++ b/ir/be/becopyheur4.c @@ -396,7 +396,7 @@ static void *co_mst_irn_init(ir_phase *ph, const ir_node *irn, void *old) { /* build list of interfering neighbours */ len = 0; be_ifg_foreach_neighbour(env->ifg, nodes_it, irn, neigh) { - if (!arch_irn_is(neigh, ignore)) { + if (!arch_irn_is_ignore(neigh)) { obstack_ptr_grow(phase_obst(ph), neigh); ++len; } @@ -552,10 +552,9 @@ static void aff_chunk_assure_weight(co_mst_env_t *env, aff_chunk_t *c) { if (an != NULL) { neighb_t *neigh; co_gs_foreach_neighb(an, neigh) { - const ir_node *m = neigh->irn; + const ir_node *m = neigh->irn; - /* skip ignore nodes */ - if (arch_irn_is(m, ignore)) + if (arch_irn_is_ignore(m)) continue; w += node_contains(c->n, m) ? neigh->costs : 0; @@ -585,8 +584,7 @@ static int count_interfering_aff_neighs(co_mst_env_t *env, const affinity_node_t const ir_node *n = neigh->irn; int i; - /* skip ignore nodes */ - if (arch_irn_is(n, ignore)) + if (arch_irn_is_ignore(n)) continue; /* check if the affinity neighbour interfere */ @@ -621,8 +619,7 @@ static void build_affinity_chunks(co_mst_env_t *env) { co_mst_irn_t *n1; affinity_node_t *an; - /* skip ignore nodes */ - if (arch_irn_is(n, ignore)) + if (arch_irn_is_ignore(n)) continue; n1 = get_co_mst_irn(env, n); @@ -645,7 +642,7 @@ static void build_affinity_chunks(co_mst_env_t *env) { aff_edge_t edge; /* skip ignore nodes */ - if (arch_irn_is(m, ignore)) + if (arch_irn_is_ignore(m)) continue; edge.src = n; @@ -721,7 +718,7 @@ static __attribute__((unused)) void chunk_order_nodes(co_mst_env_t *env, aff_chu int w = 0; neighb_t *neigh; - if (arch_irn_is(irn, ignore)) + if (arch_irn_is_ignore(irn)) continue; if (an) { @@ -747,9 +744,9 @@ static __attribute__((unused)) void chunk_order_nodes(co_mst_env_t *env, aff_chu while (!pqueue_empty(grow)) { ir_node *irn = pqueue_pop_front(grow); affinity_node_t *an = get_affinity_info(env->co, irn); - neighb_t *neigh; + neighb_t *neigh; - if (arch_irn_is(irn, ignore)) + if (arch_irn_is_ignore(irn)) continue; assert(i <= ARR_LEN(chunk->n)); @@ -802,8 +799,7 @@ static void expand_chunk_from(co_mst_env_t *env, co_mst_irn_t *node, bitset_t *v int m_idx = get_irn_idx(m); co_mst_irn_t *n2; - /* skip ignore nodes */ - if (arch_irn_is(m, ignore)) + if (arch_irn_is_ignore(m)) continue; n2 = get_co_mst_irn(env, m); @@ -1046,8 +1042,7 @@ static int recolor_nodes(co_mst_env_t *env, co_mst_irn_t *node, col_cost_t *cost neigh = node->int_neighs[j]; - /* skip ignore nodes */ - if (arch_irn_is(neigh, ignore)) + if (arch_irn_is_ignore(neigh)) continue; nn = get_co_mst_irn(env, neigh); @@ -1386,7 +1381,7 @@ static void color_aff_chunk(co_mst_env_t *env, aff_chunk_t *c) { /** * Main driver for mst safe coalescing algorithm. */ -int co_solve_heuristic_mst(copy_opt_t *co) { +static int co_solve_heuristic_mst(copy_opt_t *co) { unsigned n_regs = co->cls->n_regs; bitset_t *ignore_regs = bitset_alloca(n_regs); unsigned i, j, k; @@ -1444,10 +1439,10 @@ int co_solve_heuristic_mst(copy_opt_t *co) { /* apply coloring */ foreach_phase_irn(&mst_env.ph, irn) { - co_mst_irn_t *mirn; + co_mst_irn_t *mirn; const arch_register_t *reg; - if (arch_irn_is(irn, ignore)) + if (arch_irn_is_ignore(irn)) continue; mirn = get_co_mst_irn(&mst_env, irn); @@ -1486,9 +1481,14 @@ void be_init_copyheur4(void) { lc_opt_entry_t *co_grp = lc_opt_get_grp(chordal_grp, "co"); lc_opt_entry_t *heur4_grp = lc_opt_get_grp(co_grp, "heur4"); + static co_algo_info copyheur = { + co_solve_heuristic_mst, 0 + }; + lc_opt_add_table(heur4_grp, options); + be_register_copyopt("heur4", ©heur); + FIRM_DBG_REGISTER(dbg, "firm.be.co.heur4"); } - BE_REGISTER_MODULE_CONSTRUCTOR(be_init_copyheur4);