From 9fb0d728d0440fc32394b6286ecadf2f4ec35fa1 Mon Sep 17 00:00:00 2001 From: WormHeamer Date: Tue, 21 Oct 2025 06:22:55 -0400 Subject: cleanup --- proc.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'proc.c') diff --git a/proc.c b/proc.c index 7e983ca..1fe00a8 100644 --- a/proc.c +++ b/proc.c @@ -1,5 +1,6 @@ #include #include "proc.h" +#include "peephole.h" /* procedures */ @@ -93,6 +94,7 @@ NameBinding *scope_bind(Scope *scope, Str name, Node *value, LexSpan pos, Graph } else { b = new(scope->arena, NameBinding); } + b->nestlvl = scope->nestlvl; b->name = name; b->prev = scope->tail->latest; scope->tail->latest = b; @@ -152,6 +154,7 @@ void scope_changelist_pop(Scope *scope, Graph *g) { } } +#include #include /* TODO: implement merge, probably will need scratch arena to build up * a Xar of something like struct { NameBinding *b; Node *y, *n; }. if @@ -162,7 +165,7 @@ typedef struct { NameBinding *b; Node *y, *n; } MergeChange; -void scope_changelist_merge(Scope *scope, ScopeChangeList *y, ScopeChangeList *n, Node *region, Graph *graph, Arena *scratch) { +void scope_changelist_merge(Scope *scope, Lexer *l, ScopeChangeList *y, ScopeChangeList *n, Node *region, Graph *graph, Arena *scratch) { MergeChange *m = new_arr(scratch, MergeChange, y->n + n->n); unsigned c = 0; for (unsigned i = 0; i < y->n; i++) { @@ -187,7 +190,11 @@ void scope_changelist_merge(Scope *scope, ScopeChangeList *y, ScopeChangeList *n c++; next: } - fprintf(stderr, "%u\n", c); + for (unsigned i = 0; i < c; i++) { + Node *phi = node_new(graph, N_PHI, region, m[i].y, m[i].n); + phi = node_peephole(phi, graph, l); + scope_update(scope, m[i].b, phi, graph); + } } void scope_changelist_discard(ScopeChangeList *l, Graph *g) { -- cgit v1.2.3