diff --git a/src/midend/Pass/Pass.cpp b/src/midend/Pass/Pass.cpp index c2c8371..73a4573 100644 --- a/src/midend/Pass/Pass.cpp +++ b/src/midend/Pass/Pass.cpp @@ -79,6 +79,10 @@ void PassManager::runOptimizationPipeline(Module* moduleIR, IRBuilder* builderIR this->addPass(&SysYAddReturnPass::ID); this->run(); + this->clearPasses(); + this->addPass(&BuildCFG::ID); + this->run(); + if(DEBUG) { std::cout << "=== IR After CFGOpt Optimizations ===\n"; printPasses(); @@ -119,7 +123,9 @@ void PassManager::runOptimizationPipeline(Module* moduleIR, IRBuilder* builderIR std::cout << "=== IR After Reg2Mem Optimizations ===\n"; printPasses(); } - + this->clearPasses(); + this->addPass(&BuildCFG::ID); + this->run(); if (DEBUG) std::cout << "--- Custom optimization sequence finished ---\n"; } @@ -134,6 +140,7 @@ void PassManager::runOptimizationPipeline(Module* moduleIR, IRBuilder* builderIR SysYPrinter printer(moduleIR); printer.printIR(); } + } void PassManager::clearPasses() {