- ir_fprintf(stderr, "%+F liveness should be empty but current liveness contains:\n", bl);
- for(i = 0; i < curr[0].u.head.n_members; ++i) {
- ir_fprintf(stderr, "\t%+F\n", get_idx_irn(lv->irg, curr[1 + i].u.node.idx));
- }
- }
-
- else if(curr) {
- unsigned n_curr = curr[0].u.head.n_members;
- unsigned n_fresh = fr[0].u.head.n_members;
-
- unsigned i;
-
- if(n_curr != n_fresh) {
- ir_fprintf(stderr, "%+F: liveness set sizes differ. curr %d, correct %d\n", bl, n_curr, n_fresh);
-
- ir_fprintf(stderr, "current:\n");
- for(i = 0; i < n_curr; ++i) {
- struct _be_lv_info_node_t *n = &curr[1 + i].u.node;
- ir_fprintf(stderr, "%+F %u %+F %s\n", bl, i, get_idx_irn(lv->irg, n->idx), lv_flags_to_str(n->flags));
- }
-
- ir_fprintf(stderr, "correct:\n");
- for(i = 0; i < n_fresh; ++i) {
- struct _be_lv_info_node_t *n = &fr[1 + i].u.node;
- ir_fprintf(stderr, "%+F %u %+F %s\n", bl, i, get_idx_irn(lv->irg, n->idx), lv_flags_to_str(n->flags));
- }
- }
+ int arity = get_irn_arity(node);
+ for (int i = 0; i < arity; ++i) {
+ const arch_register_req_t *in_req = arch_get_irn_register_req_in(node, i);
+ if (in_req->cls != cls)
+ continue;
+ ir_node *op = get_irn_n(node, i);
+ const arch_register_req_t *op_req = arch_get_irn_register_req(op);
+ if (arch_register_req_is(op_req, ignore))
+ continue;
+ ir_nodeset_insert(nodeset, op);