仅在执行路径上应用传递

5 compiler-construction llvm

我有一个分析整个模块的通行证(使用runOnFunction()).但我想在每个执行路径上应用它.通过执行路径,我指的是从程序中的一个点开始的指令序列(用start开头注释),直到程序的终止点(用end注释).

我假设我必须通过构造一个CallGraph将我的模块划分为函数,然后在前面提到的CallGraph的节点中将每个函数划分为构造CFG-s的指令.我假设我选择的节点的执行路径是CallGraph离开的所有路径(我应该能够在CFG-s之间进行通信).从该节点,我可以使用图搜索算法查看所有路径.

是否有可能用用户定义的东西替换runOnFunction()/ runOnModule()方法,比如runOnExecutionPath()?如果是这样,LLVM中有一个适合存储执行路径的结构?另一种可能是使用getAnalysis<CallGraph>getAnalysis<CFG>?我很迷惑.

非常感谢您的任何建议!