From b12732f10dcbdd528d6909484537fc6f8cc85237 Mon Sep 17 00:00:00 2001 From: rain2133 <1370973498@qq.com> Date: Wed, 25 Jun 2025 15:30:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=88=86=E6=9E=90=E5=99=A8?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BF=9D=E8=AF=81=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=81=8D=E5=85=B1=E4=BA=AB=E4=B8=80=E4=B8=AA=E5=88=86=E6=9E=90?= =?UTF-8?q?=E5=99=A8=EF=BC=88=E4=B8=BB=E8=A6=81=E6=98=AF=E5=9C=A8mem2reg?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Mem2Reg.cpp | 5 ++--- src/include/Mem2Reg.h | 7 ++++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Mem2Reg.cpp b/src/Mem2Reg.cpp index 968e4f3..bf7e541 100644 --- a/src/Mem2Reg.cpp +++ b/src/Mem2Reg.cpp @@ -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); diff --git a/src/include/Mem2Reg.h b/src/include/Mem2Reg.h index f3b54ff..0004708 100644 --- a/src/include/Mem2Reg.h +++ b/src/include/Mem2Reg.h @@ -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