3

有没有办法在LLVM 函数上反向迭代。我检查了文档,但似乎找不到任何成员 typedef 用于反向迭代基本块(在函数中)。

任何帮助将不胜感激。

谢谢, 马尔哈

4

4 回答 4

4
for (BasicBlock::reverse_iterator i = BB->rbegin(), e = BB->rend(); i != e; ++i)
{ 
    // your code
}
于 2019-06-16T06:10:07.820 回答
1

我认为您可以调用Function::getBasicBlockList(),然后在该列表上使用.rbegin()and 。rend()

于 2017-05-31T05:58:28.030 回答
1

根据@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()<<", ";

    }

如果有多个前辈和后继者,打印基本块名称的顺序是什么?

与反向发布顺序相反,即发布顺序(以反向方式迭代时)

于 2020-05-15T11:43:35.990 回答
0

您可以使用llvm::reverse()StlExtras.h相反的顺序迭代容器。

于 2022-01-17T21:10:17.897 回答