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

View File

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