मैंने फ़ंक्शन में मूलभूत लेबल के लेबल का पता लगाने और प्रिंट करने के लिए एक पास लिखा है, क्योंकि मैं आगे 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;
}
आईआर फ़ाइल इस तरह दिखता है:
; <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:
क्या इन "अनाम" बुनियादी साथ कुछ गड़बड़ है ब्लॉक? मुझे क्या करना चाहिए?
उम पर लेबल के नाम प्राप्त कर सकते हैं ... कैसे हैं एचटीएमएल बुनियादी ब्लॉकों में से एक विभाजित करने के लिए? – winter333
@ winter333 यदि आपके पास कोई अन्य प्रश्न है तो आपको इसे अलग से पूछना चाहिए। – Oak