diff options
| author | 2026-04-11 12:14:09 +0200 | |
|---|---|---|
| committer | 2026-04-11 12:14:09 +0200 | |
| commit | 757b5735f44e9a9454f12612ec00c38d81f5f32c (patch) | |
| tree | f6470c4704bd1690a6476b2bb2140d10c5f4057c | |
| parent | 116a53553bfc3f5c55fb532550b97be8fab4c200 (diff) | |
backend: run mem2reg after inlining
| -rw-r--r-- | src/ir.c | 6 | ||||
| -rw-r--r-- | src/ir_ssa.c | 2 | ||||
| -rwxr-xr-x | test/external/c-testsuite/runners/single-exec/antcc-x86_64 | 2 |
3 files changed, 8 insertions, 2 deletions
@@ -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); } diff --git a/test/external/c-testsuite/runners/single-exec/antcc-x86_64 b/test/external/c-testsuite/runners/single-exec/antcc-x86_64 index da9e20c..607c4ea 100755 --- a/test/external/c-testsuite/runners/single-exec/antcc-x86_64 +++ b/test/external/c-testsuite/runners/single-exec/antcc-x86_64 @@ -7,6 +7,6 @@ then fi CC=../../../antcc -CFLAGS="" +CFLAGS="$CFLAGS -lm" export CC CFLAGS exec ./runners/single-exec/posix $1 |