X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbechordal_common.c;h=e4cab1b6bd88d71197b6adbd2159f9965a904d1d;hb=8057f671ea7f286a27e40bfe1aa45d85e0990cbe;hp=a72e7c5ac875abb1a1bb20413e6e58ccd4a4ea9e;hpb=a1e9069afa4fa1e16e2d176bcd7905d6a1ed4677;p=libfirm diff --git a/ir/be/bechordal_common.c b/ir/be/bechordal_common.c index a72e7c5ac..e4cab1b6b 100644 --- a/ir/be/bechordal_common.c +++ b/ir/be/bechordal_common.c @@ -22,7 +22,6 @@ * @brief Common functions for chordal register allocation. * @author Sebastian Hack * @date 08.12.2004 - * @version $Id: bechordal.c 26750 2009-11-27 09:37:43Z bersch $ */ #include "config.h" @@ -38,7 +37,7 @@ #include "beirgmod.h" #include "beinsn_t.h" #include "besched.h" -#include "bestatevent.h" +#include "statev_t.h" #include "benode.h" #include "bemodule.h" #include "belive.h" @@ -78,17 +77,17 @@ static inline border_t *border_add(be_chordal_env_t *env, struct list_head *head */ set_irn_link(irn, def); - DEBUG_ONLY(b->magic = BORDER_FOURCC); - DEBUG_ONLY(def->magic = BORDER_FOURCC); + DEBUG_ONLY(b->magic = BORDER_FOURCC;) + DEBUG_ONLY(def->magic = BORDER_FOURCC;) } else { /* * If the def is encountered, the use was made and so was the * the def node (see the code above). It was placed into the * link field of the irn, so we can get it there. */ - b = get_irn_link(irn); + b = (border_t*)get_irn_link(irn); - DEBUG_ONLY(assert(b && b->magic == BORDER_FOURCC && "Illegal border encountered")); + DEBUG_ONLY(assert(b && b->magic == BORDER_FOURCC && "Illegal border encountered");) } b->pressure = pressure; @@ -113,13 +112,10 @@ void create_borders(ir_node *block, void *env_ptr) #define border_use(irn, step, real) \ border_add(env, head, irn, step, ++pressure, 0, real) - be_chordal_env_t *env = env_ptr; - bitset_t *live = bitset_malloc(get_irg_last_idx(env->irg)); - ir_node *irn; - be_lv_t *lv = be_get_irg_liveness(env->irg); + be_chordal_env_t *env = (be_chordal_env_t*)env_ptr; + bitset_t *live = bitset_malloc(get_irg_last_idx(env->irg)); + be_lv_t *lv = be_get_irg_liveness(env->irg); - int i, n; - unsigned elm; unsigned step = 0; unsigned pressure = 0; struct list_head *head; @@ -129,15 +125,14 @@ void create_borders(ir_node *block, void *env_ptr) /* Set up the border list in the block info */ head = OALLOC(env->obst, struct list_head); INIT_LIST_HEAD(head); - assert(pmap_get(env->border_heads, block) == NULL); + assert(pmap_get(struct list_head, env->border_heads, block) == NULL); pmap_insert(env->border_heads, block, head); /* * Make final uses of all values live out of the block. * They are necessary to build up real intervals. */ - be_lv_foreach(lv, block, be_lv_state_end, i) { - ir_node *irn = be_lv_get_irn(lv, block, i); + be_lv_foreach(lv, block, be_lv_state_end, irn) { if (has_reg_class(env, irn)) { DBG((dbg, LEVEL_3, "\tMaking live: %+F/%d\n", irn, get_irn_idx(irn))); bitset_set(live, get_irn_idx(irn)); @@ -155,8 +150,6 @@ void create_borders(ir_node *block, void *env_ptr) DBG((dbg, LEVEL_2, "\tlive: %B\n", live)); if (get_irn_mode(irn) == mode_T) { - const ir_edge_t *edge; - foreach_out_edge(irn, edge) { ir_node *proj = get_edge_src_irn(edge); @@ -188,7 +181,7 @@ void create_borders(ir_node *block, void *env_ptr) * If the node is no phi node we can examine the uses. */ if (!is_Phi(irn)) { - for (i = 0, n = get_irn_arity(irn); i < n; ++i) { + for (int i = 0, n = get_irn_arity(irn); i < n; ++i) { ir_node *op = get_irn_n(irn, i); if (has_reg_class(env, op)) { @@ -222,19 +215,18 @@ be_insn_t *chordal_scan_insn(be_chordal_env_t *env, ir_node *irn) { be_insn_env_t ie; - ie.ignore_colors = env->ignore_colors; - ie.obst = env->obst; - ie.cls = env->cls; + ie.allocatable_regs = env->allocatable_regs; + ie.obst = env->obst; + ie.cls = env->cls; return be_scan_insn(&ie, irn); } ir_node *pre_process_constraints(be_chordal_env_t *env, be_insn_t **the_insn) { - be_insn_t *insn = *the_insn; - ir_node *perm = NULL; - bitset_t *out_constr = bitset_alloca(env->cls->n_regs); - const ir_edge_t *edge; - int i; + be_insn_t *insn = *the_insn; + ir_node *perm = NULL; + bitset_t *out_constr = bitset_alloca(env->cls->n_regs); + int i; assert(insn->has_constraints && "only do this for constrained nodes"); @@ -260,7 +252,7 @@ ir_node *pre_process_constraints(be_chordal_env_t *env, be_insn_t **the_insn) if (perm == NULL) return NULL; - be_stat_ev("constr_perm", get_irn_arity(perm)); + stat_ev_int("constr_perm", get_irn_arity(perm)); foreach_out_edge(perm, edge) { ir_node *proj = get_edge_src_irn(edge); arch_set_irn_register(proj, NULL); @@ -293,7 +285,7 @@ ir_node *pre_process_constraints(be_chordal_env_t *env, be_insn_t **the_insn) return perm; } -BE_REGISTER_MODULE_CONSTRUCTOR(be_init_chordal_common); +BE_REGISTER_MODULE_CONSTRUCTOR(be_init_chordal_common) void be_init_chordal_common(void) { FIRM_DBG_REGISTER(dbg, "firm.be.chordal_common");