#pragma once #include "Pass.h" #include "IR.h" #include "Instruction.h" #include #include namespace sysy { class DominatorTreeAnalysisPass; class LivenessAnalysisPass; class BuildCFG : public OptimizationPass { public: // Pass的唯一ID,用于PassRegistry static char ID; BuildCFG() : OptimizationPass("BuildCFG", Pass::Granularity::Function, Pass::PassKind::Optimization) {} // 重载 runOnFunction 方法,实现具体的优化逻辑 bool runOnFunction(Function *F, AnalysisManager& AM) override; // 提供PassID void *getPassID() const override { return &ID; } // 声明Pass的分析使用 // BuildCFG不依赖任何分析,但会使其他依赖CFG的分析失效 void getAnalysisUsage(std::set &analysisDependencies, std::set &analysisInvalidations) override; }; } // namespace sysy