LLVM:getUniqueExitBlock()的用法

时间:2015-07-10 19:04:49

标签: loops llvm

如何在我的llvm传递中使用Loops::getUniqueExitBlock()中的LoopInfo.h函数?
我不明白,如何为特定循环调用此函数。

1 个答案:

答案 0 :(得分:2)

getUniqueExitBlock()州的文档:

  

getUniqueExitBlock - 如果getUniqueExitBlocks只返回一个   阻止,返回该块。

     

否则返回null。

这告诉我们getUniqueExitBlock()是一种方便的方法来检查循环是否只有一个出口块。如果是,则返回 - 否则返回null。

假设您有办法获取Loop个对象,可以通过执行类似

的操作来使用此功能
auto loop = get_loop() // you have to write this part
auto exit = loop->getUniqueExitBlock() // calls the function
if(exit != nullptr) {
    // exit points to the block that the loop jumps to when it exits
} else {
    // exit is null - this means that the loop either has more than one exit block or no exit blocks. deal with this case
}

可以找到所有LLVM API的文档here。有时API没有很好地记录,就像新的Attribute API一样。在这种情况下,查看代码本身以获取LLVM代码库本身中使用的函数的示例是有用的。例如,getUniqueExitBlock()的文档告诉我们它由llvm::UnrollRuntimeLoopProlog()在内部引用。此示例可以帮助您了解如何正确使用getUniqueExitBlock()