我已经写了一个通过检测和打印功能中的basicblocks的标签,因为我想进一步使用splitBasicBlock()
。我写的是这样的:llvm:如何获得基本块的标签
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;
}
IR文件看起来像这样:
; <label>:63 ; preds = %43
%64 = load i32* %j, align 4
%65 = sext i32 %64 to i64
%66 = load i8** %tempdst, align 8
%67 = getelementptr inbounds i8* %66, i64 %65
store i8 -1, i8* %67, align 1
br label %73
; <label>:68 ; preds = %43
%69 = load i32* %j, align 4
%70 = sext i32 %69 to i64
%71 = load i8** %tempdst, align 8
%72 = getelementptr inbounds i8* %71, i64 %70
store i8 0, i8* %72, align 1
br label %73
; <label>:73 ; preds = %68, %63
br label %74
不过,我一无所知标签:
Function:main
BasicBlock:
BasicBlock:
BasicBlock:
有什么不对这些 “无名” 的基本块?我该怎么办?
庵获取标签的名称...如何分割THES基本块的一个? – winter333 2014-10-10 01:11:41
@ winter333如果你有其他问题,你应该单独提问。 – Oak 2014-10-10 03:21:42