[backend]后端流水线引入-O1

This commit is contained in:
Lixuanwang
2025-08-20 03:08:38 +08:00
parent 5e4f1feba8
commit 7db7dd0876
2 changed files with 17 additions and 12 deletions

View File

@@ -227,13 +227,15 @@ std::string RISCv64CodeGen::function_gen(Function* func) {
<< ss_after_eli.str();
}
// 阶段 2.1: 除法强度削弱优化 (Division Strength Reduction)
DivStrengthReduction div_strength_reduction;
div_strength_reduction.runOnMachineFunction(mfunc.get());
if (optLevel > 0) {
// 阶段 2.1: 除法强度削弱优化 (Division Strength Reduction)
DivStrengthReduction div_strength_reduction;
div_strength_reduction.runOnMachineFunction(mfunc.get());
// // 阶段 2.2: 指令调度 (Instruction Scheduling)
// PreRA_Scheduler scheduler;
// scheduler.runOnMachineFunction(mfunc.get());
// 阶段 2.2: 指令调度 (Instruction Scheduling)
PreRA_Scheduler scheduler;
scheduler.runOnMachineFunction(mfunc.get());
}
// 阶段 3: 物理寄存器分配 (Register Allocation)
bool allocation_succeeded = false;
@@ -341,13 +343,15 @@ std::string RISCv64CodeGen::function_gen(Function* func) {
mfunc->dumpStackFrameInfo(std::cerr);
}
// 阶段 4: 窥孔优化 (Peephole Optimization)
PeepholeOptimizer peephole;
peephole.runOnMachineFunction(mfunc.get());
if (optLevel > 0) {
// 阶段 4: 窥孔优化 (Peephole Optimization)
PeepholeOptimizer peephole;
peephole.runOnMachineFunction(mfunc.get());
// // 阶段 5: 局部指令调度 (Local Scheduling)
// PostRA_Scheduler local_scheduler;
// local_scheduler.runOnMachineFunction(mfunc.get());
// 阶段 5: 局部指令调度 (Local Scheduling)
PostRA_Scheduler local_scheduler;
local_scheduler.runOnMachineFunction(mfunc.get());
}
// 阶段 3.2: 插入序言和尾声
PrologueEpilogueInsertionPass pei_pass;

View File

@@ -6,6 +6,7 @@
extern int DEBUG;
extern int DEEPDEBUG;
extern int optLevel;
namespace sysy {