20#ifndef LLVMEXPR_ANALYSIS_STRUCTURIZECFG_PASS_HPP
21#define LLVMEXPR_ANALYSIS_STRUCTURIZECFG_PASS_HPP
44 std::map<int, std::set<int>>
67 [[nodiscard]]
bool inLoop(
int header,
int block_idx)
const {
72 return it->second.contains(block_idx);
85 :
public AnalysisPass<StructurizeCFGPass, StructurizeCFGResult> {
89 [[nodiscard]]
const char*
getName()
const override {
90 return "StructurizeCFG (Control Flow Structuring) Pass";
Result run(const std::vector< Token > &tokens, AnalysisManager &am) override
const char * getName() const override
StructurizeCFGResult Result
std::map< int, int > loop_follow
std::vector< int > structured_stack_depth_in
std::vector< int > innermost_loop_header
bool isLoopHeader(int block_idx) const
std::map< int, std::set< int > > loop_body
std::vector< CFGBlock > structured_cfg_blocks
std::vector< int > structured_block_origin
bool inLoop(int header, int block_idx) const