From 634910a8f03adc9e71f13eb9ca9a1db46e3d8c54 Mon Sep 17 00:00:00 2001 From: loader3229 <1010903229@qq.com> Date: Mon, 8 Dec 2025 09:18:54 +0800 Subject: [PATCH 1/2] commit --- src/eval/optimizer.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/eval/optimizer.cpp b/src/eval/optimizer.cpp index 8795782d..2727b560 100644 --- a/src/eval/optimizer.cpp +++ b/src/eval/optimizer.cpp @@ -666,11 +666,9 @@ bool Optimizer::fixSandwich(Program &p) const { std::swap(op1, op2); op1.source.value *= op2.source.value; changed = true; - } else if (op1.type == Operation::Type::MUL && - Semantics::mod(op2.source.value, op1.source.value) == - Number::ZERO) { - std::swap(op1, op2); - op1.source.value /= op2.source.value; + } else if (op1.type == Operation::Type::MUL) { + std::swap(op3, op2); + op3.source.value *= op2.source.value; changed = true; } } else if (ProgramUtil::isAdditive(op2.type) && From 9ed7ebbec60f8ee817607b05bb852e62c31f18de Mon Sep 17 00:00:00 2001 From: loader3229 <1010903229@qq.com> Date: Mon, 8 Dec 2025 10:14:06 +0800 Subject: [PATCH 2/2] commit --- tests/optimizer/E031.asm | 2 +- tests/optimizer/E082.asm | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 tests/optimizer/E082.asm diff --git a/tests/optimizer/E031.asm b/tests/optimizer/E031.asm index 32345987..f6cc778d 100644 --- a/tests/optimizer/E031.asm +++ b/tests/optimizer/E031.asm @@ -3,5 +3,5 @@ mul $0,6 sub $0,12 mul $0,3 ; out -sub $0,2 mul $0,18 +sub $0,36 diff --git a/tests/optimizer/E082.asm b/tests/optimizer/E082.asm new file mode 100644 index 00000000..7a9ee561 --- /dev/null +++ b/tests/optimizer/E082.asm @@ -0,0 +1,7 @@ +; in +mul $0,2 +add $0,1 +mul $0,4 +; out +mul $0,8 +add $0,4