From 06a368db3975d2105a98a3234fb9145f14ed9c67 Mon Sep 17 00:00:00 2001 From: rain2133 <1370973498@qq.com> Date: Wed, 13 Aug 2025 20:00:43 +0800 Subject: [PATCH] =?UTF-8?q?[midend]=E4=BF=AE=E5=A4=8D=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E6=96=B0=E5=BD=92=E7=BA=B3=E5=8F=98=E9=87=8F=E7=9A=84=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E9=80=BB=E8=BE=91=EF=BC=8C=E9=81=BF=E5=85=8D=E7=94=9F?= =?UTF-8?q?=E6=88=90=E6=82=AC=E7=A9=BAphi=E8=8A=82=E7=82=B9=E7=9A=84?= =?UTF-8?q?=E7=8E=B0=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/midend/Pass/Optimize/LoopStrengthReduction.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/midend/Pass/Optimize/LoopStrengthReduction.cpp b/src/midend/Pass/Optimize/LoopStrengthReduction.cpp index fc306c1..d7e3448 100644 --- a/src/midend/Pass/Optimize/LoopStrengthReduction.cpp +++ b/src/midend/Pass/Optimize/LoopStrengthReduction.cpp @@ -614,12 +614,9 @@ bool StrengthReductionContext::createNewInductionVariable(StrengthReductionCandi return false; } - // 1. 在循环头创建新的 phi 指令 - builder->setPosition(header, header->begin()); - candidate->newPhi = builder->createPhiInst(originalPhi->getType()); - candidate->newPhi->setName(originalPhi->getName() + "_sr"); + - // 2. 找到原始归纳变量的初始值和步长 + // 1. 找到原始归纳变量的初始值和步长 Value* initialValue = nullptr; Value* stepValue = nullptr; BasicBlock* latchBlock = nullptr; @@ -651,6 +648,11 @@ bool StrengthReductionContext::createNewInductionVariable(StrengthReductionCandi return false; } + // 2. 在循环头创建新的 phi 指令 + builder->setPosition(header, header->begin()); + candidate->newPhi = builder->createPhiInst(originalPhi->getType()); + candidate->newPhi->setName(originalPhi->getName() + "_sr"); + // 3. 计算新归纳变量的初始值和步长 // 新IV的初始值 = 原IV初始值 * multiplier Value* newInitialValue;