From d335cd98233e81dab87b34c16a8f3646a89aa2ac Mon Sep 17 00:00:00 2001 From: Max Wash Date: Sun, 18 Jan 2026 20:27:55 +0000 Subject: [PATCH] mie: ir: walk: walk is no longer recursive by default --- mie/include/mie/ir/walk.h | 8 +++++--- mie/ir/walk.c | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/mie/include/mie/ir/walk.h b/mie/include/mie/ir/walk.h index 8673628..0df3c04 100644 --- a/mie/include/mie/ir/walk.h +++ b/mie/include/mie/ir/walk.h @@ -19,9 +19,11 @@ enum mie_walker_flags { MIE_WALKER_F_FORWARD = 0x00u, MIE_WALKER_F_BACKWARD = 0x02u, - MIE_WALKER_F_INCLUDE_OPS = 0x04u, - MIE_WALKER_F_INCLUDE_REGIONS = 0x08u, - MIE_WALKER_F_INCLUDE_BLOCKS = 0x10u, + MIE_WALKER_F_RECURSIVE = 0x04u, + + MIE_WALKER_F_INCLUDE_OPS = 0x08u, + MIE_WALKER_F_INCLUDE_REGIONS = 0x10u, + MIE_WALKER_F_INCLUDE_BLOCKS = 0x20u, }; struct mie_walker_item { diff --git a/mie/ir/walk.c b/mie/ir/walk.c index a3cd779..637479a 100644 --- a/mie/ir/walk.c +++ b/mie/ir/walk.c @@ -293,7 +293,9 @@ static enum mie_status step(struct mie_walker *walker) return MIE_ERR_NO_DATA; } - schedule_children(walker, cur); + if (walker->w_flags & MIE_WALKER_F_RECURSIVE || cur->i_depth == 0) { + schedule_children(walker, cur); + } b_queue_delete(&walker->w_sched, &cur->i_entry); free(cur);