From 87f9753fb776a1fa6e59baef759e4687fb9a1ac7 Mon Sep 17 00:00:00 2001 From: lemon Date: Fri, 21 Nov 2025 17:07:28 +0100 Subject: ir: barebones IR passes checked contracts --- ir/ssa.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'ir/ssa.c') diff --git a/ir/ssa.c b/ir/ssa.c index 5a3db2f..f6c9d6f 100644 --- a/ir/ssa.c +++ b/ir/ssa.c @@ -1,11 +1,11 @@ #include "ir.h" -/* require use, keeps use */ void copyopt(struct function *fn) { struct block *blk = fn->entry; + FREQUIRE(FNUSE); do { for (int i = 0; i < blk->ins.n; ++i) { union ref var = mkref(RTMP, blk->ins.p[i]); @@ -53,6 +53,8 @@ filluses(struct function *fn) adduse(blk, USERJUMP, blk->jmp.arg[0]); adduse(blk, USERJUMP, blk->jmp.arg[1]); } while ((blk = blk->lnext) != fn->entry); + + fn->prop |= FNUSE; } /* vim:set ts=3 sw=3 expandtab: */ -- cgit v1.2.3