[midend-BuildCFG]新增BuildCFG优化通道,实现控制流图的构建与分析
This commit is contained in:
33
src/include/midend/Pass/Optimize/BuildCFG.h
Normal file
33
src/include/midend/Pass/Optimize/BuildCFG.h
Normal 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
|
||||
Reference in New Issue
Block a user