X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fberaextern.c;h=0153afbd0bbc4432ac66f17c85b300f80527e7ad;hb=fe53f12c8141367dff4137991ad8ce73741761cb;hp=cbd55d7469b06008310f2dc0401a3e39ecda8b79;hpb=079f8b9e0a0a949eaa9fa939e693275aad3e4cf9;p=libfirm diff --git a/ir/be/beraextern.c b/ir/be/beraextern.c index cbd55d746..0153afbd0 100644 --- a/ir/be/beraextern.c +++ b/ir/be/beraextern.c @@ -58,10 +58,11 @@ alloc ::= node-nr reg-nr . #include "config.h" #endif -#ifdef WIN32 -#include -#else -#include +#ifdef HAVE_MALLOC_H + #include +#endif +#ifdef HAVE_ALLOCA_H + #include #endif #include @@ -102,7 +103,6 @@ typedef struct _var_info_t var_info_t; * Environment with all the needed stuff */ typedef struct _be_raext_env_t { - firm_dbg_module_t *dbg; arch_env_t *aenv; const arch_register_class_t *cls; ir_graph *irg; @@ -112,6 +112,7 @@ typedef struct _be_raext_env_t { set *vars; /**< contains all var_info_t */ int n_cls_vars; /**< length of the array cls_vars */ var_info_t **cls_vars; /**< only the var_infos for current cls. needed for double iterating */ + DEBUG_ONLY(firm_dbg_module_t *dbg;) } be_raext_env_t; @@ -345,7 +346,7 @@ static void ssa_destr_simple_walker(ir_node *blk, void *env) { if (!is_Phi(phi)) break; - if (arch_irn_is_ignore(raenv->aenv, phi)) + if (arch_irn_is(raenv->aenv, phi, ignore)) continue; raenv->cls = arch_get_irn_reg_class(raenv->aenv, phi, -1); @@ -497,7 +498,7 @@ static void extract_vars_of_cls(be_raext_env_t *raenv) { int count = 0; var_info_t *vi; - raenv->cls_vars = malloc(set_count(raenv->vars) * sizeof(*raenv->cls_vars)); + raenv->cls_vars = xmalloc(set_count(raenv->vars) * sizeof(*raenv->cls_vars)); assert(raenv->cls_vars); set_foreach(raenv->vars, vi) @@ -536,7 +537,7 @@ static INLINE int get_spill_costs(be_raext_env_t *raenv, var_info_t *vi) { int c_spills=0, c_reloads=0; pset_foreach(vi->values, irn) { - if (arch_irn_is_ignore(raenv->aenv, irn) || be_is_Reload(irn)) { + if (arch_irn_is(raenv->aenv, irn, ignore) || be_is_Reload(irn)) { pset_break(vi->values); return UNSPILLABLE; } @@ -619,16 +620,16 @@ static void dump_affinities_walker(ir_node *irn, void *env) { int pos, max; var_info_t *vi1, *vi2; - if (arch_get_irn_reg_class(raenv->aenv, irn, -1) != raenv->cls || arch_irn_is_ignore(raenv->aenv, irn)) + if (arch_get_irn_reg_class(raenv->aenv, irn, -1) != raenv->cls || arch_irn_is(raenv->aenv, irn, ignore)) return; vi1 = get_var_info(irn); /* copies have affinities */ if (arch_irn_classify(raenv->aenv, irn) == arch_irn_class_copy) { - ir_node *other = get_irn_n(irn, be_pos_Copy_orig); + ir_node *other = be_get_Copy_op(irn); - if (! arch_irn_is_ignore(raenv->aenv, other)) { + if (! arch_irn_is(raenv->aenv, other, ignore)) { vi2 = get_var_info(other); fprintf(raenv->f, "(%d, %d, %d)\n", vi1->var_nr, vi2->var_nr, get_affinity_weight(irn)); @@ -640,7 +641,7 @@ static void dump_affinities_walker(ir_node *irn, void *env) { for (pos = 0, max = get_irn_arity(irn); posaenv, &req, irn, pos); - if (arch_register_req_is(&req, should_be_same) && arch_irn_is_ignore(raenv->aenv, req.other_same)) { + if (arch_register_req_is(&req, should_be_same) && arch_irn_is(raenv->aenv, req.other_same, ignore)) { vi2 = get_var_info(req.other_same); fprintf(raenv->f, "(%d, %d, %d)\n", vi1->var_nr, vi2->var_nr, get_affinity_weight(irn)); @@ -938,8 +939,7 @@ static void be_ra_extern_main(const be_irg_t *bi) { raenv.aenv = env->arch_env; raenv.dom_info = be_compute_dominance_frontiers(irg); raenv.vars = new_set(compare_var_infos, 64); - raenv.dbg = firm_dbg_register("ir.be.raextern"); - firm_dbg_set_mask(raenv.dbg, DBG_LEVEL); + FIRM_DBG_REGISTER(raenv.dbg, "firm.be.raextern"); /* Insert copies for constraints */ handle_constraints(&raenv);