- size_t node_count = ir_nodeset_size(nodes);
- size_t additional_defines = 0;
- size_t reload_values = 0;
- int registers = env->n_regs;
- const arch_env_t *arch_env = env->arch_env;
- const arch_register_class_t *cls = env->cls;
- spill_candidate_t *candidates;
- ir_nodeset_iterator_t iter;
- size_t i, arity;
- int spills_needed;
- size_t cand_idx;
- ir_node *n;
- const bitset_t *spilled_nodes = env->spilled_nodes;
-
- /* mode_T nodes define several values at once. Count them */
- if(get_irn_mode(node) == mode_T) {
- ir_node *proj = sched_next(node);
-
- while(is_Proj(proj)) {
- if(arch_irn_consider_in_reg_alloc(arch_env, cls, proj)) {
- ++additional_defines;
- }
- proj = sched_next(proj);
- }
- }
-
- /* we might temporarily need registers for reloaded values */
+ size_t n_live_nodes = ir_nodeset_size(live_nodes);
+ size_t values_defined = 0;
+ size_t free_regs_needed = 0;
+ spill_candidate_t *candidates;
+ ir_nodeset_iterator_t iter;
+ int i, arity;
+ size_t c;
+ int spills_needed;
+ size_t cand_idx;
+ ir_node *n;
+ ir_node *value;
+
+ be_foreach_definition(node, cls, value,
+ assert(req_->width >= 1);
+ values_defined += req_->width;
+ );
+
+ /* we need registers for the non-live argument values */