X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbespilldaemel.c;h=4b1311be146a55eff580de9009405022867922ac;hb=bed05ed2d3b2ae84849fd2e75603e8834153cd5b;hp=f015f6e6b8e32370503b190409fe541bd0c5e962;hpb=673590264d6f8e4e52ecbae2e63282e4e7d3d02a;p=libfirm diff --git a/ir/be/bespilldaemel.c b/ir/be/bespilldaemel.c index f015f6e6b..4b1311be1 100644 --- a/ir/be/bespilldaemel.c +++ b/ir/be/bespilldaemel.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -57,7 +57,7 @@ DEBUG_ONLY(static firm_dbg_module_t *dbg = NULL;) static spill_env_t *spill_env; -static int n_regs; +static unsigned n_regs; static const arch_register_class_t *cls; static const be_lv_t *lv; static bitset_t *spilled_nodes; @@ -70,8 +70,8 @@ struct spill_candidate_t { static int compare_spill_candidates_desc(const void *d1, const void *d2) { - const spill_candidate_t *c1 = d1; - const spill_candidate_t *c2 = d2; + const spill_candidate_t *c1 = (const spill_candidate_t*)d1; + const spill_candidate_t *c2 = (const spill_candidate_t*)d2; return (int) (c1->costs - c2->costs); } @@ -150,7 +150,8 @@ static void do_spilling(ir_nodeset_t *live_nodes, ir_node *node) size_t free_regs_needed = 0; spill_candidate_t *candidates; ir_nodeset_iterator_t iter; - size_t i, arity; + int i, arity; + size_t c; int spills_needed; size_t cand_idx; ir_node *n; @@ -184,17 +185,17 @@ static void do_spilling(ir_nodeset_t *live_nodes, ir_node *node) candidates = ALLOCAN(spill_candidate_t, n_live_nodes); /* construct array with spill candidates and calculate their costs */ - i = 0; + c = 0; foreach_ir_nodeset(live_nodes, n, iter) { - spill_candidate_t *candidate = & candidates[i]; + spill_candidate_t *candidate = & candidates[c]; assert(!bitset_is_set(spilled_nodes, get_irn_idx(n))); candidate->node = n; candidate->costs = get_spill_costs(n); - ++i; + ++c; } - assert(i == n_live_nodes); + assert(c == n_live_nodes); /* sort spill candidates */ qsort(candidates, n_live_nodes, sizeof(candidates[0]), @@ -365,7 +366,7 @@ static void spill_block(ir_node *block, void *data) static void be_spill_daemel(ir_graph *irg, const arch_register_class_t *new_cls) { - n_regs = new_cls->n_regs - be_put_ignore_regs(irg, new_cls, NULL); + n_regs = be_get_n_allocatable_regs(irg, new_cls); if (n_regs == 0) return;