修复分析器逻辑,保证优化遍共享一个分析器(主要是在mem2reg)

This commit is contained in:
rain2133
2025-06-25 15:30:28 +08:00
parent 1e06c5a446
commit b12732f10d
2 changed files with 6 additions and 6 deletions

View File

@ -745,11 +745,10 @@ auto Mem2Reg::renameAll() -> void {
*/
auto Mem2Reg::mem2regPipeline() -> void {
// 首先进行mem2reg的前置分析
controlFlowAnalysis = new ControlFlowAnalysis(pModule);
activeVarAnalysis = new ActiveVarAnalysis();
// 控制流分析
controlFlowAnalysis->clear();
controlFlowAnalysis->runControlFlowAnalysis();
// 活跃变量分析
activeVarAnalysis->clear();
dataFlowAnalysisUtils.addBackwardAnalyzer(activeVarAnalysis);
dataFlowAnalysisUtils.backwardAnalyze(pModule);

View File

@ -17,13 +17,14 @@ class Mem2Reg {
private:
Module *pModule;
IRBuilder *pBuilder;
ActiveVarAnalysis *activeVarAnalysis; // 活跃变量分析
ControlFlowAnalysis *controlFlowAnalysis; // 控制流分析
ActiveVarAnalysis *activeVarAnalysis; // 活跃变量分析
DataFlowAnalysisUtils dataFlowAnalysisUtils;
public:
Mem2Reg(Module *pMoudle, IRBuilder *pBuilder) :
pModule(pMoudle), pBuilder(pBuilder), activeVarAnalysis(nullptr), controlFlowAnalysis(nullptr), dataFlowAnalysisUtils()
Mem2Reg(Module *pMoudle, IRBuilder *pBuilder,
ControlFlowAnalysis *pCFA = nullptr, ActiveVarAnalysis *pAVA = nullptr) :
pModule(pMoudle), pBuilder(pBuilder), controlFlowAnalysis(pCFA), activeVarAnalysis(pAVA), dataFlowAnalysisUtils()
{} // 初始化函数
void mem2regPipeline(); ///< mem2reg