小编win*_*333的帖子

llvm:如何获取Basic Blocks的标签

我写了一个传递来检测和打印函数中基本块的标签,因为我想splitBasicBlock()进一步使用.我写的是这样的:

virtual bool runOnModule(Module &M)
{
    for(Module::iterator F = M.begin(), E = M.end(); F!= E; ++F)
    {
        errs()<<"Function:"<<F->getName()<<"\n";
        //for(Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB)
        for (iplist<BasicBlock>::iterator iter = F->getBasicBlockList().begin();
                    iter != F->getBasicBlockList().end();
                    iter++)
        {
          BasicBlock* currBB = iter;
          errs() << "BasicBlock: "  << currBB->getName() << "\n";   
        }
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

IR文件如下所示:

; <label>:63                                      ; preds = %43
  %64 = load i32* %j, align 4
  %65 = sext i32 %64 to i64
  %66 …
Run Code Online (Sandbox Code Playgroud)

llvm llvm-c++-api

12
推荐指数
3
解决办法
5905
查看次数

标签 统计

llvm ×1

llvm-c++-api ×1