有没有办法在LLVM函数上迭代反向。我检查了文档 但似乎找不到任何成员typedef来反向迭代Basic块(在函数中)。
任何帮助将不胜感激。
谢谢, Malhar
答案 0 :(得分:1)
我认为您可以致电Function::getBasicBlockList(),然后在该列表中使用.rbegin()
和rend()
。
答案 1 :(得分:0)
for (BasicBlock::reverse_iterator i = BB->rbegin(), e = BB->rend(); i != e; ++i)
{
// you're code
}
答案 2 :(得分:0)
根据@arrowed建议共享有效代码段:
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()<<", ";
}
如果有多个前任和后继人,打印基本块名称的顺序是什么?
相反的后订单顺序,即后订单(以相反的方式迭代)