X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbecopyilp2.c;h=36dad10952f69deb93bc2dacd12ed038dba7a0cb;hb=3e889332cb054e5cee1a12bba6dd0209121100cf;hp=c45683f63cdf64e4cf3da8d543f9634ba039089d;hpb=32ea6ea0320f551448bb66e534e3351977464d42;p=libfirm diff --git a/ir/be/becopyilp2.c b/ir/be/becopyilp2.c index c45683f63..36dad1095 100644 --- a/ir/be/becopyilp2.c +++ b/ir/be/becopyilp2.c @@ -30,19 +30,19 @@ * - Clique-star constraints * * - * \min \sum_{ (i,j) \in Q } w_ij y_ij + * \min \sum_{ (i,j) \in Q } w_ij y_ij * - * \sum_c x_nc = 1 n \in N, c \in C + * \sum_c x_nc = 1 n \in N, c \in C * - * x_nc = 0 n \in N, c \not\in C(n) + * x_nc = 0 n \in N, c \not\in C(n) * - * \sum x_nc <= 1 x_nc \in Clique \in AllCliques, c \in C + * \sum x_nc <= 1 x_nc \in Clique \in AllCliques, c \in C * - * \sum_{e \in p} y_e >= 1 p \in P path constraints + * \sum_{e \in p} y_e >= 1 p \in P path constraints * - * \sum_{e \in cs} y_e >= |cs| - 1 cs \in CP clique-star constraints + * \sum_{e \in cs} y_e >= |cs| - 1 cs \in CP clique-star constraints * - * x_nc, y_ij \in N, w_ij \in R^+ + * x_nc, y_ij \in N, w_ij \in R^+ */ #include "config.h" @@ -55,13 +55,13 @@ #include "irtools.h" #include "irgwalk.h" #include "becopyilp_t.h" -#include "beifg_t.h" +#include "beifg.h" #include "besched.h" #include "bemodule.h" #define DEBUG_LVL 1 -typedef struct _local_env_t { +typedef struct local_env_t { double time_limit; int first_x_var, last_x_var; int n_colors; @@ -73,16 +73,16 @@ typedef struct _local_env_t { static void build_coloring_cstr(ilp_env_t *ienv) { be_ifg_t *ifg = ienv->co->cenv->ifg; - void *iter = be_ifg_nodes_iter_alloca(ifg); + nodes_iter_t iter; bitset_t *colors; ir_node *irn; char buf[16]; colors = bitset_alloca(arch_register_class_n_regs(ienv->co->cls)); - be_ifg_foreach_node(ifg, iter, irn) + be_ifg_foreach_node(ifg, &iter, irn) if (!sr_is_removed(ienv->sr, irn)) { - bitset_pos_t col; + size_t col; int cst_idx; const arch_register_req_t *req; int curr_node_color = get_irn_col(irn); @@ -133,7 +133,7 @@ static void build_interference_cstr(ilp_env_t *ienv) local_env_t *lenv = ienv->env; be_ifg_t *ifg = ienv->co->cenv->ifg; int n_colors = lenv->n_colors; - void *iter = be_ifg_cliques_iter_alloca(ifg); + cliques_iter_t iter; ir_node **clique = ALLOCAN(ir_node*, n_colors); int size; int col; @@ -142,7 +142,7 @@ static void build_interference_cstr(ilp_env_t *ienv) char buf[16]; /* for each maximal clique */ - be_ifg_foreach_clique(ifg, iter, clique, &size) { + be_ifg_foreach_clique(ifg, &iter, clique, &size) { int realsize = 0; for (i=0; icls)); bitset_clear_all(my.normal_colors); - arch_put_non_ignore_regs(co->cls, my.normal_colors); - my.n_colors = bitset_popcnt(my.normal_colors); + be_put_allocatable_regs(co->irg, co->cls, my.normal_colors); + my.n_colors = bitset_popcount(my.normal_colors); ienv = new_ilp_env(co, ilp2_build, ilp2_apply, &my);