如何在我的llvm传递中使用Loops::getUniqueExitBlock()
中的LoopInfo.h
函数?
我不明白,如何为特定循环调用此函数。
答案 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()
。