-#define be_foreach_definition_(node, ccls, value, code) \
- do { \
- if (get_irn_mode(node) == mode_T) { \
- foreach_out_edge(node, edge_) { \
- ir_node *const value = get_edge_src_irn(edge_); \
- arch_register_req_t const *const req_ = arch_get_irn_register_req(value); \
- if (req_->cls != ccls) \
- continue; \
- code \
- } \
- } else { \
- arch_register_req_t const *const req_ = arch_get_irn_register_req(node); \
- ir_node *const value = node; \
- if (req_->cls == ccls) { \
- code \
- } \
- } \
- } while (0)
+#define be_foreach_definition_(node, ccls, value, req, code) \
+ be_foreach_value(node, value, \
+ arch_register_req_t const *const req = arch_get_irn_register_req(value); \
+ if (req->cls != ccls) \
+ continue; \
+ code \
+ )