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;