#ifndef POST_RA_SCHEDULER_H #define POST_RA_SCHEDULER_H #include "RISCv64LLIR.h" #include "Pass.h" namespace sysy { /** * @class PostRA_Scheduler * @brief 寄存器分配后的局部指令调度器 * * 主要目标是优化寄存器分配器插入的spill/fill代码(lw/sw), * 尝试将加载指令提前,以隐藏其访存延迟。 */ class PostRA_Scheduler : public Pass { public: static char ID; PostRA_Scheduler() : Pass("post-ra-scheduler", Granularity::Function, PassKind::Optimization) {} void *getPassID() const override { return &ID; } bool runOnFunction(Function *F, AnalysisManager& AM) override; void runOnMachineFunction(MachineFunction* mfunc); }; } // namespace sysy #endif // POST_RA_SCHEDULER_H