added get_next_ir_opcodes() to allow allocation of cosecutive opcodes
[libfirm] / ir / be / becopyilp.c
index 4d610d9..20bdbc6 100644 (file)
@@ -109,7 +109,7 @@ static INLINE int pi_is_simplicial(problem_instance_t *pi, const ir_node *ifn) {
        int i, o, size = 0;
        ir_node **all, *curr;
        be_ifg_t *ifg = pi->co->chordal_env->ifg;
-       void *iter = be_ifg_iter_alloca(ifg);
+       void *iter = be_ifg_neighbours_iter_alloca(ifg);
 
        all = alloca(be_ifg_degree(ifg, ifn) * sizeof(*all));
 
@@ -142,14 +142,15 @@ static void pi_find_simplicials(problem_instance_t *pi) {
        int redo = 1;
        int n_nodes = 0;
        const be_ifg_t *ifg = pi->co->chordal_env->ifg;
-       void *iter = be_ifg_iter_alloca(ifg);
+       void *iter = be_ifg_neighbours_iter_alloca(ifg);
 
        DBG((dbg, LEVEL_2, "Find simlicials...\n"));
 
        while (redo) {
+               arch_register_req_t req;
                redo = 0;
                be_ifg_foreach_node(ifg, iter, irn) {
-                       if (!is_removed(irn) && !is_optimizable(get_arch_env(pi->co), irn) && !is_optimizable_arg(pi->co, irn)) {
+                       if (!is_removed(irn) && !is_optimizable(get_arch_env(pi->co), irn, &req) && !is_optimizable_arg(pi->co, irn)) {
                        if (pi_is_simplicial(pi, irn)) {
                                        simpl_t *s = xmalloc(sizeof(*s));
                                        s->irn = irn;
@@ -234,7 +235,7 @@ static void pi_add_constr_A(problem_instance_t *pi) {
 
                                /* iterate over all possible colors in order */
                                bitset_clear_all(pos_regs);
-                               arch_get_allocatable_regs(get_arch_env(pi->co), curr->irn, -1, pi->co->chordal_env->cls, pos_regs);
+                               arch_get_allocatable_regs(get_arch_env(pi->co), curr->irn, -1, pos_regs);
                                bitset_foreach(pos_regs, col) {
                                        int var_idx;
                                        mangle_var2(pi->buf, 'x', nnr, col);
@@ -352,14 +353,14 @@ static void pi_add_constr_E(problem_instance_t *pi) {
                root = curr->nodes[0];
                rootnr = get_irn_graph_nr(root);
                bitset_clear_all(root_regs);
-               arch_get_allocatable_regs(get_arch_env(pi->co), root, -1, pi->co->chordal_env->cls, root_regs);
+               arch_get_allocatable_regs(get_arch_env(pi->co), root, -1, root_regs);
 
                /* for all arguments of root */
                for (i = 1; i < curr->node_count; ++i) {
                        arg = curr->nodes[i];
                        argnr = get_irn_graph_nr(arg);
                        bitset_clear_all(arg_regs);
-                       arch_get_allocatable_regs(get_arch_env(pi->co), arg, -1, pi->co->chordal_env->cls, arg_regs);
+                       arch_get_allocatable_regs(get_arch_env(pi->co), arg, -1, arg_regs);
 
                        /* Introduce new variable and set factor in objective function */
                        mangle_var2(buf, 'y', rootnr, argnr);
@@ -921,7 +922,7 @@ static void pi_set_simplicials(problem_instance_t *pi) {
        simpl_t *simpl, *tmp;
        be_ifg_t *ifg        = pi->co->chordal_env->ifg;
        bitset_t *used_cols  = bitset_alloca(arch_register_class_n_regs(pi->co->chordal_env->cls));
-       void *iter           = be_ifg_iter_alloca(ifg);
+       void *iter           = be_ifg_neighbours_iter_alloca(ifg);
 
        DBG((dbg, LEVEL_2, "Set simplicials...\n"));
        /* color the simplicial nodes in right order */
@@ -992,10 +993,6 @@ int co_ilp_opt(copy_opt_t *co, double time_limit) {
        problem_instance_t *pi;
 
        dbg = firm_dbg_register("ir.be.copyoptilp");
-       if (!strcmp(co->name, DEBUG_IRG))
-               firm_dbg_set_mask(dbg, DEBUG_IRG_LVL_ILP);
-       else
-               firm_dbg_set_mask(dbg, DEBUG_LVL_ILP);
 
        pi = new_pi(co);
        if (!pi->all_simplicial) {