3

我正在编写一个 LLVM pass 来分析和修改生成的 IR 代码。有没有办法识别后端,我的意思是知道 BasicBlock 的后继者是否实际上在路径上方的某个位置。

4

1 回答 1

2

就在这里。

首先,请注意,您需要区分“到 BB 的每条路径都必须经过 A”和“从 A 出发的某些路径可能会导致 BB”。

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

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

于 2012-08-26T08:15:06.960 回答