aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2026-04-11 12:14:09 +0200
committerlemon <lsof@mailbox.org>2026-04-11 12:14:09 +0200
commit757b5735f44e9a9454f12612ec00c38d81f5f32c (patch)
treef6470c4704bd1690a6476b2bb2140d10c5f4057c
parent116a53553bfc3f5c55fb532550b97be8fab4c200 (diff)
backend: run mem2reg after inlining
-rw-r--r--src/ir.c6
-rw-r--r--src/ir_ssa.c2
-rwxr-xr-xtest/external/c-testsuite/runners/single-exec/antcc-x86_642
3 files changed, 8 insertions, 2 deletions
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);
}
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