-static ir_node *process_irn(spill_ilp_t *si, pset *live, ir_node *irn, int *demand)
-{
- int i, n;
- int relevant_args = 0, results = 0;
-
- DBG((si->dbg, LEVEL_1, "at %+F\n", irn));
-
- while(is_Proj(irn)) {
- if(has_reg_class(si, irn)) {
- assert(pset_find_ptr(live, irn) && "node must be live");
- pset_remove_ptr(live, irn);
- results++;
- }
-
- DBG((si->dbg, LEVEL_1, "skipped proj %+F\n", irn));
- irn = sched_prev(irn);
- }
-
- DBG((si->dbg, LEVEL_1, "\tlanded at irn %+F\n", irn));
-
- if(results > 0)
- assert(get_irn_mode(irn) == mode_T && "node before projs must be tuple");
-
- if(has_reg_class(si, irn)) {
- assert( pset_find_ptr(live, irn) && "node must be live");
- pset_remove_ptr(live, irn);
- results = 1;
- }
-
- for(i = 0, n = get_irn_arity(irn); i < n; ++i) {
- ir_node *op = get_irn_n(irn, i);
- if(has_reg_class(si, op) && !pset_find_ptr(live, op)) {
- relevant_args++;
- DBG((si->dbg, LEVEL_1, "\trelevant arg %+F\n", op));
- }
- }
-
- *demand = MAX(results, relevant_args);
- DBG((si->dbg, LEVEL_1, "\tdemand: %d\n", *demand));
- return irn;
+static void print_live_set(spill_ilp_t *si, pset *s) {
+ ir_node *n;
+ for(n=pset_first(s); n; n=pset_next(s))
+ DBG((si->dbg, LEVEL_3, " %+F\n", n));