X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbelower.c;h=ea759db6f76873cbfa22c789ca3de92801eeb2d6;hb=afbbc0b1ccd684c4c24bfd43d0f994123245f39f;hp=230023eda0fb307485f48eaef2bc1ad1c3deceb0;hpb=8e048fa756fbd96a47973cbc547bdd84a4ce5529;p=libfirm diff --git a/ir/be/belower.c b/ir/be/belower.c index 230023eda..ea759db6f 100644 --- a/ir/be/belower.c +++ b/ir/be/belower.c @@ -38,6 +38,7 @@ #include "irgmod.h" #include "iredges_t.h" #include "irgwalk.h" +#include "array_t.h" #include "bearch_t.h" #include "belower.h" @@ -224,7 +225,7 @@ static perm_cycle_t *get_perm_cycle(perm_cycle_t *cycle, reg_pair_t *pairs, int } /* assume worst case: all remaining pairs build a cycle or chain */ - cycle->elems = xcalloc((n - n_pairs_done) * 2, sizeof(cycle->elems[0])); + cycle->elems = XMALLOCNZ(const arch_register_t*, (n - n_pairs_done) * 2); cycle->n_elems = 2; /* initial number of elements is 2 */ cycle->elems[0] = pairs[start].in_reg; cycle->elems[1] = pairs[start].out_reg; @@ -289,7 +290,6 @@ static void lower_perm_node(ir_node *irn, void *walk_env) { int n, i, pn, do_copy, j, n_ops; reg_pair_t *pairs; const ir_edge_t *edge; - perm_cycle_t *cycle; ir_node *sched_point, *block, *in[2]; ir_node *arg1, *arg2, *res1, *res2; ir_node *cpyxchg = NULL; @@ -364,15 +364,15 @@ static void lower_perm_node(ir_node *irn, void *walk_env) { real_size = n - get_n_checked_pairs(pairs, n); - be_do_stat_perm(reg_class->name, reg_class->n_regs, irn, block, n, real_size); - /* check for cycles and chains */ while (get_n_checked_pairs(pairs, n) < n) { + perm_cycle_t *cycle; + i = n_ops = 0; /* go to the first not-checked pair */ while (pairs[i].checked) i++; - cycle = xcalloc(1, sizeof(*cycle)); + cycle = XMALLOCZ(perm_cycle_t); cycle = get_perm_cycle(cycle, pairs, n, i); DB((mod, LEVEL_1, "%+F: following %s created:\n ", irn, cycle->type == PERM_CHAIN ? "chain" : "cycle")); @@ -495,8 +495,6 @@ static void lower_perm_node(ir_node *irn, void *walk_env) { } } - be_do_stat_permcycle(reg_class->name, irn, block, cycle->type == PERM_CHAIN, cycle->n_elems, n_ops); - free((void *) cycle->elems); free(cycle); } @@ -801,8 +799,6 @@ void assure_constraints(be_irg_t *birg) { ir_node **nodes; FIRM_DBG_REGISTER(firm_dbg_module_t *mod, "firm.be.lower.constr"); - be_assure_dom_front(birg); - DEBUG_ONLY(cenv.dbg = mod;) cenv.birg = birg; cenv.op_set = new_pset(cmp_op_copy_assoc, 16);