我已經寫了一個通過檢測和打印功能中的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