From 75db572e8a7a144b3d6fdc2b148ac3921f77f2b2 Mon Sep 17 00:00:00 2001 From: lemon Date: Tue, 16 Sep 2025 17:24:52 +0200 Subject: implement switch statement --- optmem.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'optmem.c') diff --git a/optmem.c b/optmem.c index 9e8d1c6..1c137b7 100644 --- a/optmem.c +++ b/optmem.c @@ -184,8 +184,8 @@ void mem2reg(struct function *fn) { static struct bitset ssealed[4]; - struct block *blk = fn->entry; struct ssabuilder sb = { .nblk = fn->nblk }; + struct block *blk; sb.pendingphis = xcalloc(fn->nblk * sizeof *sb.pendingphis); if (fn->nblk <= 64 * arraylength(ssealed)) { @@ -195,6 +195,9 @@ mem2reg(struct function *fn) sb.sealed = xcalloc(BSSIZE(fn->nblk) * sizeof *sb.sealed); } + sortrpo(fn); + blk = fn->entry; + do { for (int i = 0; i < blk->ins.n; ++i) { struct use *use, *uend; -- cgit v1.2.3