C++ 如何在LLVM中计算CFG中的边数

C++ 如何在LLVM中计算CFG中的边数,c++,controls,clang,llvm,flow,C++,Controls,Clang,Llvm,Flow,我正在学习如何在LLVM中实现pass。我已经为代码生成了CFG,现在我想计算每个函数中CFG中的边数 我希望会有一个API,我可以使用它来计算CFG中的边数,或者我需要做一些树遍历 谢谢。IMHO,没有API可以直接为您提供这些。但它很容易实现 是一个LLVM过程,它按拓扑顺序对函数的基本块进行排序。它演示了如何在函数中运行BBs并查看BB后续函数,因此它具有实现所需功能的所有构建块,等等。llvm::TerminatorInst::getNumSuccessors()谢谢。此外,是否可以在同

我正在学习如何在LLVM中实现pass。我已经为代码生成了CFG,现在我想计算每个函数中CFG中的边数

我希望会有一个API,我可以使用它来计算CFG中的边数,或者我需要做一些树遍历


谢谢。

IMHO,没有API可以直接为您提供这些。但它很容易实现


是一个LLVM过程,它按拓扑顺序对函数的基本块进行排序。它演示了如何在函数中运行BBs并查看BB后续函数,因此它具有实现所需功能的所有构建块,等等。

llvm::TerminatorInst::getNumSuccessors()
谢谢。此外,是否可以在同一cpp文件中写入两个过程?我在想,两张通行证都可以注册。对这一点的任何理解都被理解了。@ USER 2058668:是的,可以在单个C++中编写多个PASE来获得CFG中的边缘数。但是我想知道如何计算CFG中的循环数。