- if(arch_register_req_is(req, should_be_different)) {
- ir_snprintf(tmp, sizeof(tmp), " different to: %+F", req->other_different);
- strncat(buf, tmp, len);
+ if (arch_register_req_is(req, must_be_different)) {
+ const unsigned other = req->other_different;
+ int i;
+
+ ir_snprintf(tmp, sizeof(tmp), " different from:");
+ for (i = 0; 1U << i <= other; ++i) {
+ if (other & (1U << i)) {
+ ir_snprintf(tmp, sizeof(tmp), " %+F", get_irn_n(skip_Proj_const(node), i));
+ strncat(buf, tmp, len);
+ }
+ }
+ }
+
+ if (arch_register_req_is(req, ignore)) {
+ strncat(buf, " ignore", len);
+ }
+ if (arch_register_req_is(req, produces_sp)) {
+ strncat(buf, " produces_sp", len);