X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbecopyopt.c;h=431743e2ca90c733d6de488b6aaf27ecc5070333;hb=7ac90687a76ac7f73c98dca2881b641f2f77ed55;hp=3526c17eec654faa43a779fc5241d37a605e1147;hpb=76c0c4f215716a69cebe49fbcba24c17a9595f32;p=libfirm diff --git a/ir/be/becopyopt.c b/ir/be/becopyopt.c index 3526c17ee..431743e2c 100644 --- a/ir/be/becopyopt.c +++ b/ir/be/becopyopt.c @@ -76,7 +76,7 @@ void free_copy_opt(copy_opt_t *co) { int co_is_optimizable_root(const copy_opt_t *co, ir_node *irn) { arch_register_req_t req; - if (arch_irn_is_ignore(co->aenv, irn)) + if (arch_irn_is(co->aenv, irn, ignore)) return 0; if (is_Reg_Phi(irn) || is_Perm_Proj(co->aenv, irn) || is_2addr_code(co->aenv, irn, &req)) @@ -88,7 +88,9 @@ int co_is_optimizable_root(const copy_opt_t *co, ir_node *irn) { int co_is_optimizable_arg(const copy_opt_t *co, ir_node *irn) { const ir_edge_t *edge; - if (arch_irn_is_ignore(co->aenv, irn)) + assert(0 && "Is buggy and obsolete. Do not use"); + + if (arch_irn_is(co->aenv, irn, ignore)) return 0; foreach_out_edge(irn, edge) { @@ -419,22 +421,22 @@ int co_get_lower_bound(const copy_opt_t *co) { |_| |___/ ******************************************************************************/ -static int compare_node_t(const void *k1, const void *k2, size_t size) { - const node_t *n1 = k1; - const node_t *n2 = k2; +static int compare_affinity_t(const void *k1, const void *k2, size_t size) { + const affinity_t *n1 = k1; + const affinity_t *n2 = k2; return (n1->irn != n2->irn); } static void add_edge(copy_opt_t *co, ir_node *n1, ir_node *n2, int costs) { - node_t new_node, *node; + affinity_t new_node, *node; neighb_t new_nbr, *nbr; int allocnew; new_node.irn = n1; new_node.count = 0; new_node.neighbours = NULL; - node = set_insert(co->nodes, new_node.irn, sizeof(new_node), HASH_PTR(new_node.irn)); + node = set_insert(co->nodes, &new_node, sizeof(new_node), HASH_PTR(new_node.irn)); allocnew = 1; for (nbr = node->neighbours; nbr; nbr = nbr->next) @@ -470,7 +472,7 @@ static void build_graph_walker(ir_node *irn, void *env) { int pos, max; arch_register_req_t req; - if (!is_curr_reg_class(co, irn) || arch_irn_is_ignore(co->aenv, irn)) + if (!is_curr_reg_class(co, irn) || arch_irn_is(co->aenv, irn, ignore)) return; /* Phis */ @@ -493,7 +495,7 @@ static void build_graph_walker(ir_node *irn, void *env) { void co_build_graph_structure(copy_opt_t *co) { obstack_init(&co->obst); - co->nodes = new_set(compare_node_t, 32); + co->nodes = new_set(compare_affinity_t, 32); irg_walk_graph(co->irg, build_graph_walker, NULL, co); } @@ -506,8 +508,12 @@ void co_free_graph_structure(copy_opt_t *co) { /* co_solve_ilp1() co_solve_ilp2() are implemented in becopyilpX.c */ int co_gs_is_optimizable(copy_opt_t *co, ir_node *irn) { - node_t new_node; + affinity_t new_node, *n; - new_node.irn = irn; - return (int)set_find(co->nodes, new_node.irn, sizeof(new_node), HASH_PTR(new_node.irn)); + new_node.irn = irn; + n = set_find(co->nodes, &new_node, sizeof(new_node), HASH_PTR(new_node.irn)); + if (n) { + return (n->count > 0); + } else + return 0; }