From 757b5735f44e9a9454f12612ec00c38d81f5f32c Mon Sep 17 00:00:00 2001 From: lemon Date: Sat, 11 Apr 2026 12:14:09 +0200 Subject: backend: run mem2reg after inlining --- src/ir.c | 6 +++++- src/ir_ssa.c | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/ir.c b/src/ir.c index ead9ae4..f34cfaf 100644 --- a/src/ir.c +++ b/src/ir.c @@ -680,7 +680,11 @@ irfini(Function *fn) copyopt(fn); } if (ccopt.o >= OPT1) { - doinline(fn); + if (doinline(fn)) { + filluses(fn); + copyopt(fn); + mem2reg(fn); + } freearena(fn->passarena); filldom(fn); if (!(fn->prop & FNUSE)) filluses(fn); diff --git a/src/ir_ssa.c b/src/ir_ssa.c index 6e7945b..a1d960f 100644 --- a/src/ir_ssa.c +++ b/src/ir_ssa.c @@ -35,6 +35,8 @@ copyopt(Function *fn) if (ins->cls != k) continue; replcuses(var, arg); + if (arg.t == RTMP) + deluse(blk, var.i, arg); *ins = mkinstr0(Onop,0); deluses(var.i); } -- cgit v1.2.3