3

我在获取基本块的索引时遇到了一些问题。

for (Function::iterator II = F.begin(), EE = F.end(); II != EE; ++II, ++ii) 
{  BasicBlock* BB=II;

我有段错误或无法使用我在 LLVM 中找到的几种方法的复杂结构。您是否知道如何尽可能简单地使用以下位置的方法:

http://llvm.org/doxygen/Instructions_8h_source.html#l02136

http://llvm.org/doxygen/EdgeBundles_8cpp_source.html#l00078

或者等价的东西?我只想获取基本块的 ID。

谢谢 !

4

1 回答 1

2

正如 Eli Bendersky 在上面的评论中指出的那样,这取决于您对索引的解释。如果您只对基本块的唯一标识符感兴趣,那么基本块的名称在函数中是唯一的。你可以使用

BB->getName()

还有其他类型的 ID 与基本块相关联,这取决于算法的性质。例如,如果您正在使用 Keith Cooper 的迭代手指算法编写支配树构造算法,您将把每个基本块与一个反向深度第一顺序的增量 ID 相关联。此 ID 不是 BasicBlock 结构的一部分,应由您维护。

于 2012-12-22T04:17:58.050 回答