[midend-BuildCFG]新增BuildCFG优化通道,实现控制流图的构建与分析

This commit is contained in:
歪比歪比
2025-08-02 22:48:21 +08:00
parent 999f2c6615
commit a1cf60c420
3 changed files with 165 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
#pragma once
#include "Pass.h"
#include "IR.h"
#include "Instruction.h"
#include <queue>
#include <set>
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<void *> &analysisDependencies,
std::set<void *> &analysisInvalidations) override;
};
} // namespace sysy