X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbecopyilp2.c;h=2d8320c8ab20a1a6381af0d63c06e45a7ae082c7;hb=7a689378511110240ac68f78e20316dc51814c1b;hp=f1703fb7d555a024832140b89913209f3834d314;hpb=87d3e7eba011a02e25e216fc299dd41f82d6e30d;p=libfirm diff --git a/ir/be/becopyilp2.c b/ir/be/becopyilp2.c index f1703fb7d..2d8320c8a 100644 --- a/ir/be/becopyilp2.c +++ b/ir/be/becopyilp2.c @@ -142,6 +142,12 @@ static void build_interference_cstr(ilp_env_t *ienv) { } } + +/** + * TODO: Remove the dependency of the opt-units data structure + * by walking over all affinity edges. Graph structure + * does not provide this walker, yet. + */ static void build_affinity_cstr(ilp_env_t *ienv) { unit_t *curr; int n_colors = arch_register_class_n_regs(ienv->co->cls); @@ -249,7 +255,7 @@ static INLINE void remove_edge(set *edges, ir_node *n1, ir_node *n2, int *counte * At most 1 node of the clique can be colored equally with the external node. */ static void build_clique_star_cstr(ilp_env_t *ienv) { - affinity_t *aff; + affinity_node_t *aff; /* for each node with affinity edges */ co_gs_foreach_aff_node(ienv->co, aff) { @@ -358,7 +364,7 @@ static void extend_path(ilp_env_t *ienv, pdeq *path, ir_node *irn) { be_ifg_t *ifg = ienv->co->cenv->ifg; int i, len; ir_node **curr_path; - affinity_t *aff; + affinity_node_t *aff; neighb_t *nbr; /* do not walk backwards or in circles */ @@ -373,7 +379,7 @@ static void extend_path(ilp_env_t *ienv, pdeq *path, ir_node *irn) { /* check for forbidden interferences */ len = pdeq_len(path); curr_path = alloca(len * sizeof(*curr_path)); - pdeq_copyl(path, curr_path); + pdeq_copyl(path, (const void **)curr_path); for (i=1; ico, aff_info) { @@ -500,11 +506,14 @@ int co_solve_ilp2(copy_opt_t *co, double time_limit) { ilp_env_t *ienv; local_env_t my; + ASSERT_OU_AVAIL(co); //See build_clique_st + ASSERT_GS_AVAIL(co); + my.time_limit = time_limit; my.first_x_var = -1; my.last_x_var = -1; my.nr_2_irn = pmap_create(); - my.dbg = firm_dbg_register("ir.be.coilp2"); + FIRM_DBG_REGISTER(my.dbg, "ir.be.coilp2"); firm_dbg_set_mask(my.dbg, DEBUG_LVL); ienv = new_ilp_env(co, ilp2_build, ilp2_apply, &my);