-#define be_lv_foreach(lv, bl, flags, i) \
- for (i = _be_lv_next_irn(lv, bl, flags, 0); i >= 0; i = _be_lv_next_irn(lv, bl, flags, i + 1))
-
+#define be_lv_foreach(lv, block, flags, node) \
+ for (bool once = true; once;) \
+ for (lv_iterator_t iter = be_lv_iteration_begin((lv), (block), (flags)); once; once = false) \
+ for (ir_node *node; (node = be_lv_iteration_next(&iter)) != NULL;)