From 9c8861a1ad58954f40d599c83405c720e0d2e07b Mon Sep 17 00:00:00 2001 From: WormHeamer Date: Thu, 7 Aug 2025 04:20:47 -0400 Subject: fix region nodes being culled prematurely --- ir.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'ir.c') diff --git a/ir.c b/ir.c index bd3354b..d527bfe 100644 --- a/ir.c +++ b/ir.c @@ -60,6 +60,7 @@ Str type_desc(Type *t, Arena *arena) { case T_TUPLE: return S("tuple"); case T_BOOL: return S("bool"); case T_INT: return S("i64"); + case T_PTR: return str_fmt(arena, "^%S", type_desc(t->next, arena)); default: return S("N/A"); } } @@ -712,12 +713,12 @@ zero_no_effect: if (node_eql_i64(CAR(n), 0)) return CDR(n); case N_PHI: if (same) return CAR(n); - if (IN(CTRL(n), 0)->val.type.lvl == T_XCTRL) { - return CDR(n); - } if (IN(CTRL(n), 1)->val.type.lvl == T_XCTRL) { return CAR(n); } + if (IN(CTRL(n), 0)->val.type.lvl == T_XCTRL) { + return CDR(n); + } break; default: @@ -854,12 +855,11 @@ NameBinding *scope_bind(Scope *scope, Str name, Node *value, LexSpan pos, Proc * return prev; } -NameBinding *scope_update(Scope *scope, Str name, Node *to, Proc *proc) { - NameBinding *b = scope_find(scope, name); - if (!b) return NULL; +NameBinding *scope_update(NameBinding *b, Node *to, Proc *proc) { + Node *n = b->node; node_add(proc, to, proc->keepalive); - node_remove(proc, b->node, proc->keepalive); b->node = to; + node_remove(proc, n, proc->keepalive); return b; } -- cgit v1.2.3