我有一个分析整个模块的通道(使用runOnFunction()
)。但我想将它应用到每个执行路径上。执行路径是指从程序中的一个点(用 start 注释)到程序的终止点(用 end 注释)的指令序列。
我假设我必须通过构造一个 CallGraph 将我的模块划分为函数,然后通过在前面提到的 CallGraph 的节点中构造 CFG-s 将每个函数划分为指令。我假设我选择的节点的执行路径是在 CallGraph 叶子中完成的所有路径(我应该能够在 CFG-s 之间进行通信)。从该节点,我可以使用图形搜索算法查看所有路径。
是否有可能用用户定义的东西替换runOnFunction()
/runOnModule()
方法,比如runOnExecutionPath()
?如果是这样,LLVM 中是否存在适合存储执行路径的结构?另一种可能性是使用getAnalysis<CallGraph>
or getAnalysis<CFG>
? 我很困惑。
非常感谢您的任何建议!