[midend-LICM][fix]修复循环不变量的识别逻辑

This commit is contained in:
rain2133
2025-08-17 01:19:44 +08:00
parent e32585fd25
commit d83dc7a2e7
4 changed files with 300 additions and 34 deletions

View File

@@ -153,14 +153,31 @@ void PassManager::runOptimizationPipeline(Module* moduleIR, IRBuilder* builderIR
this->clearPasses();
this->addPass(&LoopNormalizationPass::ID);
this->addPass(&InductionVariableElimination::ID);
// this->addPass(&LICM::ID);
this->run();
if(DEBUG) {
std::cout << "=== IR After Loop Normalization, Induction Variable Elimination ===\n";
printPasses();
}
this->clearPasses();
this->addPass(&LICM::ID);
this->run();
if(DEBUG) {
std::cout << "=== IR After LICM ===\n";
printPasses();
}
this->clearPasses();
this->addPass(&LoopStrengthReduction::ID);
this->run();
// if(DEBUG) {
// std::cout << "=== IR After Loop Normalization, LICM, and Strength Reduction Optimizations ===\n";
// printPasses();
// }
if(DEBUG) {
std::cout << "=== IR After Loop Normalization, and Strength Reduction Optimizations ===\n";
printPasses();
}
// this->clearPasses();
// this->addPass(&Reg2Mem::ID);