[midend-mem2reg]暂存文件,思路留存
This commit is contained in:
@@ -3,4 +3,12 @@
|
|||||||
| 名称 | 优化级别 | 开发进度 |
|
| 名称 | 优化级别 | 开发进度 |
|
||||||
| ------------ | ------------ | ---------- |
|
| ------------ | ------------ | ---------- |
|
||||||
| CFG优化 | 函数级 | 已完成 |
|
| CFG优化 | 函数级 | 已完成 |
|
||||||
| DCE | 函数级 | 待测试 |
|
| DCE | 函数级 | 待测试 |
|
||||||
|
|
||||||
|
# 后续优化可能涉及的改动
|
||||||
|
|
||||||
|
## 1)将所有的alloca集中到entryblock中
|
||||||
|
|
||||||
|
好处:优化友好性,方面mem2reg提升
|
||||||
|
目前没有实现这个机制,如果想要实现首先解决同一函数不同域的同名变量命名区分
|
||||||
|
需要保证符号表能正确维护域中的局部变量
|
||||||
@@ -27,7 +27,7 @@ add_executable(sysyc
|
|||||||
Liveness.cpp
|
Liveness.cpp
|
||||||
DCE.cpp
|
DCE.cpp
|
||||||
AddressCalculationExpansion.cpp
|
AddressCalculationExpansion.cpp
|
||||||
# Mem2Reg.cpp
|
Mem2Reg.cpp
|
||||||
# Reg2Mem.cpp
|
# Reg2Mem.cpp
|
||||||
RISCv64Backend.cpp
|
RISCv64Backend.cpp
|
||||||
RISCv64ISel.cpp
|
RISCv64ISel.cpp
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
#include "SysYIRCFGOpt.h"
|
#include "SysYIRCFGOpt.h"
|
||||||
#include "SysYIRPrinter.h"
|
#include "SysYIRPrinter.h"
|
||||||
#include "DCE.h"
|
#include "DCE.h"
|
||||||
|
#include "Mem2Reg.h"
|
||||||
#include "Pass.h"
|
#include "Pass.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <queue>
|
#include <queue>
|
||||||
@@ -62,6 +63,10 @@ void PassManager::runOptimizationPipeline(Module* moduleIR, IRBuilder* builderIR
|
|||||||
this->addPass(&DCE::ID);
|
this->addPass(&DCE::ID);
|
||||||
this->run();
|
this->run();
|
||||||
|
|
||||||
|
this->clearPasses();
|
||||||
|
this->addPass(&Mem2Reg::ID);
|
||||||
|
this->run();
|
||||||
|
|
||||||
if (DEBUG) std::cout << "--- Custom optimization sequence finished ---\n";
|
if (DEBUG) std::cout << "--- Custom optimization sequence finished ---\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user