X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbespilldaemel.c;h=ac33e1f4faf5de90be29ed2d82627f443c94bbcf;hb=274626e2d58cfa247b88ee05adaca8906b025d93;hp=f015f6e6b8e32370503b190409fe541bd0c5e962;hpb=673590264d6f8e4e52ecbae2e63282e4e7d3d02a;p=libfirm diff --git a/ir/be/bespilldaemel.c b/ir/be/bespilldaemel.c index f015f6e6b..ac33e1f4f 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. * @@ -22,7 +22,6 @@ * @brief Naive spilling algorithm * @author Matthias Braun * @date 20.09.2005 - * @version $Id: bespillbelady.c 13913 2007-05-18 12:48:56Z matze $ * @brief * This implements a naive spilling algorithm. It is designed to produce * similar effects to the spill decisions produced by traditional graph @@ -57,7 +56,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 +69,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); } @@ -135,7 +134,7 @@ static void spill_node(ir_node *node) static unsigned get_value_width(const ir_node *node) { - const arch_register_req_t *req = arch_get_register_req_out(node); + const arch_register_req_t *req = arch_get_irn_register_req(node); return req->width; } @@ -150,7 +149,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 +184,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 +365,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; @@ -386,7 +386,7 @@ static void be_spill_daemel(ir_graph *irg, const arch_register_class_t *new_cls) be_delete_spill_env(spill_env); } -BE_REGISTER_MODULE_CONSTRUCTOR(be_init_daemelspill); +BE_REGISTER_MODULE_CONSTRUCTOR(be_init_daemelspill) void be_init_daemelspill(void) { static be_spiller_t daemel_spiller = {