[midend-SCCP]没有编译报错但是Segmemtation falut

This commit is contained in:
rain2133
2025-07-31 17:29:34 +08:00
parent 35691ab7bc
commit de0f8422e9
3 changed files with 200 additions and 196 deletions

View File

@@ -5,6 +5,7 @@
#include "DCE.h"
#include "Mem2Reg.h"
#include "Reg2Mem.h"
#include "SCCP.h"
#include "Pass.h"
#include <iostream>
#include <queue>
@@ -50,6 +51,8 @@ void PassManager::runOptimizationPipeline(Module* moduleIR, IRBuilder* builderIR
registerOptimizationPass<Mem2Reg>(builderIR);
registerOptimizationPass<Reg2Mem>(builderIR);
registerOptimizationPass<SCCP>(builderIR);
if (optLevel >= 1) {
//经过设计安排优化遍的执行顺序以及执行逻辑
if (DEBUG) std::cout << "Applying -O1 optimizations.\n";
@@ -80,10 +83,11 @@ void PassManager::runOptimizationPipeline(Module* moduleIR, IRBuilder* builderIR
this->clearPasses();
this->addPass(&Mem2Reg::ID);
this->addPass(&SCCP::ID);
this->run();
if(DEBUG) {
std::cout << "=== IR After Mem2Reg Optimizations ===\n";
std::cout << "=== IR After Mem2Reg And SCCP Optimizations ===\n";
printPasses();
}