- /* workaround for lots of buggy code out there as most people think volatile
- * asm is enough for everything and forget the flags (linux kernel, etc.)
- */
- if (get_irn_pinned(node) == op_pin_state_pinned) {
- clobbers_flags = 1;
- }
-
- arity = get_irn_arity(node);
- in = ALLOCANZ(ir_node*, arity);
-
- clobbers = get_ASM_clobbers(node);
- n_clobbers = 0;
- for (i = 0; i < get_ASM_n_clobbers(node); ++i) {
- const arch_register_req_t *req;
- const char *c = get_id_str(clobbers[i]);
-
- if (strcmp(c, "memory") == 0)
- continue;
- if (strcmp(c, "cc") == 0) {
- clobbers_flags = 1;
+ for (size_t c = 0; c < get_ASM_n_clobbers(node); ++c) {
+ const char *clobber = get_id_str(clobbers[c]);
+ const arch_register_req_t *req = ia32_parse_clobber(clobber);
+ if (req == NULL)