X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbecopyheur4.c;h=40105fc1582c130e231b2c0f3d3d337e154bf43a;hb=0a8dac2b5fb9e59ea2add322baf61237b607bea5;hp=5e501501577c5a9697e26947eadf8c55e2e3389f;hpb=f84594874e48e9883cfb1e040856f3f56782c956;p=libfirm diff --git a/ir/be/becopyheur4.c b/ir/be/becopyheur4.c index 5e5015015..40105fc15 100644 --- a/ir/be/becopyheur4.c +++ b/ir/be/becopyheur4.c @@ -56,11 +56,6 @@ #include "bemodule.h" -#define COL_COST_INFEASIBLE DBL_MAX -#define AFF_NEIGHBOUR_FIX_BENEFIT 128.0 -#define NEIGHBOUR_CONSTR_COSTS 64.0 - - #ifdef DEBUG_libfirm #define DBG_AFF_CHUNK(env, level, chunk) do { if (firm_dbg_get_mask(dbg) & (level)) dbg_aff_chunk((env), (chunk)); } while (0) @@ -114,7 +109,6 @@ typedef struct aff_edge_t { /* main coalescing environment */ typedef struct co_mst_env_t { int n_regs; /**< number of regs in class */ - int k; /**< number of non-ignore registers in class */ bitset_t *allocatable_regs; /**< set containing all global ignore registers */ ir_nodemap map; /**< phase object holding data for nodes */ struct obstack obst; @@ -173,13 +167,12 @@ static co_mst_irn_t *co_mst_irn_init(co_mst_env_t *env, const ir_node *irn) req = arch_get_irn_register_req(irn); if (arch_register_req_is(req, limited)) { rbitset_copy_to_bitset(req->limited, res->adm_colors); + /* exclude global ignore registers as well */ + bitset_and(res->adm_colors, env->allocatable_regs); } else { - bitset_set_all(res->adm_colors); + bitset_copy(res->adm_colors, env->allocatable_regs); } - /* exclude global ignore registers as well */ - bitset_and(res->adm_colors, env->allocatable_regs); - /* compute the constraint factor */ res->constr_factor = (real_t) (1 + env->n_regs - bitset_popcount(res->adm_colors)) / env->n_regs; @@ -1237,7 +1230,7 @@ static void color_aff_chunk(co_mst_env_t *env, aff_chunk_t *c) * TODO Sebastian: Perhaps we should at all nodes and figure out * a suitable color using costs as done above (determine_color_costs). */ - for (i = 0; i < env->k; ++i) { + for (i = 0; i < env->n_regs; ++i) { int col = order[i].col; waitq *good_starts; aff_chunk_t *local_best; @@ -1432,7 +1425,6 @@ static int co_solve_heuristic_mst(copy_opt_t *co) unsigned n_regs = co->cls->n_regs; bitset_t *allocatable_regs = bitset_alloca(n_regs); unsigned i, j; - size_t k; size_t pn; ir_node *irn; co_mst_env_t mst_env; @@ -1446,10 +1438,8 @@ static int co_solve_heuristic_mst(copy_opt_t *co) obstack_init(&mst_env.obst); be_put_allocatable_regs(co->cenv->irg, co->cls, allocatable_regs); - k = bitset_popcount(allocatable_regs); mst_env.n_regs = n_regs; - mst_env.k = k; mst_env.chunks = new_pqueue(); mst_env.co = co; mst_env.allocatable_regs = allocatable_regs;