fix handling of default pns in the backend (they don't need table entries)
[libfirm] / ir / be / beilpsched.c
index 08294dd..8381899 100644 (file)
@@ -71,7 +71,6 @@
 #include "beutil.h"
 #include "bestat.h"
 #include "beirg_t.h"
-#include "benodesets.h"
 
 typedef struct _ilpsched_options_t {
        unsigned regpress;
@@ -689,6 +688,7 @@ static void refine_asap_alap_times(ir_node *irn, void *walk_env) {
 
 static INLINE void check_for_keeps(waitq *keeps, ir_node *block, ir_node *irn) {
        const ir_edge_t *edge;
+        (void) block;
 
        foreach_out_edge(irn, edge) {
                ir_node *user = get_edge_src_irn(edge);
@@ -1126,7 +1126,7 @@ static void create_variables(be_ilpsched_env_t *env, lpp_t *lpp, be_ilpsched_irn
  * Collect all operands and nodes @p irn depends on.
  * If there is a Proj within the dependencies, all other Projs of the parent node are added as well.
  */
-static nodeset *sta_collect_in_deps(ir_node *irn, nodeset *deps) {
+static void sta_collect_in_deps(ir_node *irn, ir_nodeset_t *deps) {
        int i;
 
        for (i = get_irn_ins_or_deps(irn) - 1; i >= 0; --i) {
@@ -1138,15 +1138,13 @@ static nodeset *sta_collect_in_deps(ir_node *irn, nodeset *deps) {
                        p = get_Proj_pred(p);
                        foreach_out_edge(p, edge) {
                                ir_node *src = get_edge_src_irn(edge);
-                               nodeset_insert(deps, src);
+                               ir_nodeset_insert(deps, src);
                        }
                }
                else {
-                       nodeset_insert(deps, p);
+                       ir_nodeset_insert(deps, p);
                }
        }
-
-       return deps;
 }
 
 /**
@@ -1174,7 +1172,10 @@ static void create_assignment_and_precedence_constraints(be_ilpsched_env_t *env,
                be_ilpsched_irn_t    *node;
                ilpsched_node_attr_t *na;
                ir_node              *pred;
-               nodeset              *deps = new_nodeset(16);
+               ir_nodeset_t          deps;
+               ir_nodeset_iterator_t iter;
+
+               ir_nodeset_init(&deps);
 
                node    = get_ilpsched_irn(env, irn);
                na      = get_ilpsched_node_attr(node);
@@ -1199,8 +1200,8 @@ static void create_assignment_and_precedence_constraints(be_ilpsched_env_t *env,
                ilp_timer_push(t_cst_prec);
                bs_block_irns = bitset_clear_all(bs_block_irns);
 
-               deps = sta_collect_in_deps(irn, deps);
-               foreach_nodeset(deps, pred) {
+               sta_collect_in_deps(irn, &deps);
+               foreach_ir_nodeset(&deps, pred, iter) {
                        unsigned             t_low, t_high, t;
                        be_ilpsched_irn_t    *pred_node;
                        ilpsched_node_attr_t *pna;
@@ -1273,7 +1274,7 @@ static void create_assignment_and_precedence_constraints(be_ilpsched_env_t *env,
                                DEL_ARR_F(tmp_var_idx);
                        }
                }
-               del_nodeset(deps);
+               ir_nodeset_destroy(&deps);
                ilp_timer_pop();
        }
        DBG((env->dbg, LEVEL_1, "\t%u assignement constraints (%g sec)\n",
@@ -1871,6 +1872,7 @@ static void create_ilp(ir_node *block, void *walk_env) {
 
                DBG((env->dbg, LEVEL_1, "Creating LPP with estimated numbers: %d vars, %d cst\n",
                        estimated_n_var, estimated_n_cst));
+                (void) estimated_n_var;
 
                /* set up the LPP object */
                snprintf(name, sizeof(name), "ilp scheduling IRG %s", get_entity_ld_name(get_irg_entity(env->irg)));
@@ -1943,19 +1945,19 @@ static void create_ilp(ir_node *block, void *walk_env) {
 
                /* check for valid solution */
                if (! lpp_is_sol_valid(lpp)) {
-                       char buf[1024];
-                       FILE *f;
-
                        DEBUG_ONLY({
-                               if (firm_dbg_get_mask(env->dbg) >= 2) {
-                                       snprintf(buf, sizeof(buf), "lpp_block_%lu.infeasible.txt", get_irn_node_nr(block));
-                                       f = fopen(buf, "w");
-                                       lpp_dump_plain(lpp, f);
-                                       fclose(f);
-                                       snprintf(buf, sizeof(buf), "lpp_block_%lu.infeasible.mps", get_irn_node_nr(block));
-                                       lpp_dump(lpp, buf);
-                                       dump_ir_block_graph(env->irg, "-infeasible");
-                               }
+                            char buf[1024];
+                            FILE *f;
+
+                            if (firm_dbg_get_mask(env->dbg) >= 2) {
+                              snprintf(buf, sizeof(buf), "lpp_block_%lu.infeasible.txt", get_irn_node_nr(block));
+                              f = fopen(buf, "w");
+                              lpp_dump_plain(lpp, f);
+                              fclose(f);
+                              snprintf(buf, sizeof(buf), "lpp_block_%lu.infeasible.mps", get_irn_node_nr(block));
+                              lpp_dump(lpp, buf);
+                              dump_ir_block_graph(env->irg, "-infeasible");
+                           }
                        })
 
                        ir_fprintf(stderr, "ILP found no solution within time (%+F, %+F), falling back to heuristics.\n", block, env->irg);