-#define foreach_out_edge_kind_safe(irn, edge, ne, kind) \
- for((edge) = (get_irn_out_edge_first_kind(irn, kind)), (ne) = ((edge) ? (get_irn_out_edge_next(irn, edge)) : NULL); \
- edge; (edge) = (ne), (ne) = ((edge) ? (get_irn_out_edge_next(irn, edge)) : NULL))
+#define foreach_out_edge_kind_safe(irn, edge, kind) \
+ for (ir_edge_t const *edge = get_irn_out_edge_first_kind((irn), (kind)), *edge##__next; \
+ edge ? edge##__next = get_irn_out_edge_next((irn), edge), 1 : 0; \
+ edge = edge##__next)