X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbecopyheur.c;h=55dd2a1319a5d9474ca1eaebede7e38f86bfc0a5;hb=0fbcef83aa6060534172bb13e71cdadb04428806;hp=aeb9193285a530cf2576bac86909e4af01c31bdc;hpb=c839083c4fbe25c968e9e98f1aec6e8a8e2e05f3;p=libfirm diff --git a/ir/be/becopyheur.c b/ir/be/becopyheur.c index aeb919328..55dd2a131 100644 --- a/ir/be/becopyheur.c +++ b/ir/be/becopyheur.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -32,9 +32,7 @@ * and the qnode is reinserted in the queue. The first qnode colored without * conflicts is the best one. */ -#ifdef HAVE_CONFIG_H #include "config.h" -#endif #include "debug.h" #include "bitset.h" @@ -177,7 +175,7 @@ static INLINE int qnode_get_new_color(const qnode_t *qn, ir_node *irn) { if (found) return found->new_color; else - return get_irn_col(qn->ou->co, irn); + return get_irn_col(irn); } /** @@ -210,7 +208,7 @@ static INLINE void qnode_pin_local(const qnode_t *qn, ir_node *irn) { node_stat_t *found = qnode_find_or_insert_node(qn, irn); found->pinned_local = 1; if (found->new_color == NO_COLOR) - found->new_color = get_irn_col(qn->ou->co, irn); + found->new_color = get_irn_col(irn); } @@ -242,7 +240,6 @@ static ir_node *qnode_color_irn(const qnode_t *qn, ir_node *irn, int col, const copy_opt_t *co = qn->ou->co; const be_chordal_env_t *chordal_env = co->cenv; const arch_register_class_t *cls = co->cls; - const arch_env_t *arch_env = co->aenv; int irn_col = qnode_get_new_color(qn, irn); ir_node *sub_res, *curr; be_ifg_t *ifg = chordal_env->ifg; @@ -278,7 +275,7 @@ static ir_node *qnode_color_irn(const qnode_t *qn, ir_node *irn, int col, const bitset_flip_all(free_cols); /* Exclude colors not assignable to the irn */ - req = arch_get_register_req(arch_env, irn, -1); + req = arch_get_register_req(irn, -1); if (arch_register_req_is(req, limited)) { bitset_t *limited = bitset_alloca(cls->n_regs); rbitset_copy_to_bitset(req->limited, limited); @@ -302,7 +299,7 @@ static ir_node *qnode_color_irn(const qnode_t *qn, ir_node *irn, int col, const #endif /* SEARCH_FREE_COLORS */ /* If target color is not allocatable changing color is impossible */ - if (!arch_reg_is_allocatable(arch_env, irn, -1, arch_register_for_index(cls, col))) { + if (!arch_reg_is_allocatable(irn, -1, arch_register_for_index(cls, col))) { DBG((dbg, LEVEL_3, "\t %+F impossible\n", irn)); return CHANGE_IMPOSSIBLE; } @@ -480,11 +477,11 @@ no_stable_set: * Creates a new qnode */ static INLINE qnode_t *new_qnode(const unit_t *ou, int color) { - qnode_t *qn = xmalloc(sizeof(*qn)); - qn->ou = ou; - qn->color = color; - qn->mis = xmalloc(ou->node_count * sizeof(*qn->mis)); - qn->conflicts = new_set(set_cmp_conflict_t, SLOTS_CONFLICTS); + qnode_t *qn = XMALLOC(qnode_t); + qn->ou = ou; + qn->color = color; + qn->mis = XMALLOCN(ir_node*, ou->node_count); + qn->conflicts = new_set(set_cmp_conflict_t, SLOTS_CONFLICTS); qn->changed_nodes = new_set(set_cmp_node_stat_t, SLOTS_CHANGED_NODES); return qn; } @@ -535,7 +532,6 @@ static INLINE void ou_insert_qnode(unit_t *ou, qnode_t *qn) { static void ou_optimize(unit_t *ou) { int i; qnode_t *curr = NULL, *tmp; - const arch_env_t *aenv = ou->co->aenv; const arch_register_class_t *cls = ou->co->cls; bitset_pos_t idx; bitset_t *pos_regs = bitset_alloca(cls->n_regs); @@ -547,9 +543,9 @@ static void ou_optimize(unit_t *ou) { /* init queue */ INIT_LIST_HEAD(&ou->queue); - arch_get_allocatable_regs(aenv, ou->nodes[0], -1, pos_regs); + arch_get_allocatable_regs(ou->nodes[0], -1, pos_regs); - /* exclude ingore colors */ + /* exclude ignore colors */ bitset_andnot(pos_regs, ou->co->cenv->ignore_colors); assert(bitset_popcnt(pos_regs) != 0 && "No register is allowed for this node !!?");