有没有办法在LLVM 函数上反向迭代。我检查了文档,但似乎找不到任何成员 typedef 用于反向迭代基本块(在函数中)。
任何帮助将不胜感激。
谢谢, 马尔哈
有没有办法在LLVM 函数上反向迭代。我检查了文档,但似乎找不到任何成员 typedef 用于反向迭代基本块(在函数中)。
任何帮助将不胜感激。
谢谢, 马尔哈
for (BasicBlock::reverse_iterator i = BB->rbegin(), e = BB->rend(); i != e; ++i)
{
// your code
}
我认为您可以调用Function::getBasicBlockList(),然后在该列表上使用.rbegin()
and 。rend()
根据@arrowd 建议共享工作代码片段:
auto bbList = &(func_ptr->getBasicBlockList()); //fetch the pointer of the list
errs()<<"reverse \n";
for(auto bb = bbList->rbegin(); bb != bbList->rend(); bb++) {
b = &(*bb);
errs() << b->getName()<<", ";
}
如果有多个前辈和后继者,打印基本块名称的顺序是什么?
与反向发布顺序相反,即发布顺序(以反向方式迭代时)
您可以使用llvm::reverse()
StlExtras.h以相反的顺序迭代容器。