llvm:检测函数传递中的if/else条件

llvm:检测函数传递中的if/else条件,llvm,static-analysis,Llvm,Static Analysis,我正在尝试编写一个LLVM分析传递函数pass,它检测循环和if/else条件,以识别可能的函数调用序列和不可能的函数调用序列 为了检测循环,我使用了LoopInfoWrapperPass中的LoopInfo,有人知道是否有用于if/else条件的工具吗 如果只想检测简单的if-else结构,而不检测任何其他嵌套的if-else结构,那么它是直接向前的,只有一个相同的successerBB->getUniqueSuccessor和一个相同的predesessorBB->getUniqueSucc

我正在尝试编写一个LLVM分析传递函数pass,它检测循环和if/else条件,以识别可能的函数调用序列和不可能的函数调用序列


为了检测循环,我使用了LoopInfoWrapperPass中的LoopInfo,有人知道是否有用于if/else条件的工具吗

如果只想检测简单的if-else结构,而不检测任何其他嵌套的if-else结构,那么它是直接向前的,只有一个相同的successerBB->getUniqueSuccessor和一个相同的predesessorBB->getUniqueSuccessor的两个块就是if和else块。对于嵌套结构,它会有点复杂,是一个递归函数,它也需要支配者边界信息

现在我在考虑它,我想知道我是否不能只使用BasicBlocks名称来完成这项工作。因为if基本块名为if.then/if.else,所以可以使用块名。 如果基本块是B,请使用B->getName获取块的名称

if.then  => if block
if.else  => else-if block
if.end   => block after if-else blocks
for.cond => condition of for loop
for.body => body of foor loop
for.end  => block after foor loop