如何在LLVM中从BasicBlock中识别后台

How can I identify a backedge from a BasicBlock in LLVM

本文关键字:识别 后台 BasicBlock 中从 LLVM      更新时间:2023-10-16

我正在编写一个LLVM过程,该过程分析并修改生成的IR代码。有没有一种方法可以识别后边缘,我的意思是知道BasicBlock的继任者是否真的在路径上的某个位置。

是的,有.

首先,请注意,您需要区分"通往BB的每条路径都必须经过A"answers"从A到BB有一些路径"。

我认为你正在寻找第一种情况——告诉基本块BB的后继A是否是执行必须通过才能到达B的基本块。

当这种情况发生时,我们说"A支配B"。检查优势的接口是通过DominatorTree类(在pass的getAnalysisUsage函数中添加。有关示例,请参阅编写llvm pass)。