2015-10-25 5 views
5

एलएलवीएम आईआरबिल्डर फ़ंक्शन सेटइन्सर्टपॉइंट (निर्देश * I) निर्दिष्ट करता है कि निर्दिष्ट निर्देश निर्दिष्ट निर्देश से पहले डाले गए निर्देशों को सम्मिलित किया जाना चाहिए।एलएलवीएम आईआरबिल्डर: किसी विशेष निर्देश के बाद डालने बिंदु सेट करें

किसी विशेष निर्देश के बाद सम्मिलित बिंदु कैसे सेट किया जा सकता है? मुझे कोई फ़ंक्शन नहीं मिल रहा है जो इसे सीधे कर सकता है।

उत्तर

6

डालने बिंदु को दिए गए निर्देश के बाद सेट नहीं किया जा सकता है - इसके बजाय, आपको इसे अगले निर्देश से पहले सेट करना चाहिए।

अगले निर्देश के लिए सूचक पाने के लिए आपको Instruction पर getNextNode() विधि है जो उपलब्ध है का उपयोग कर सकते हैं:

Builder.SetInsertPoint(I->getNextNode()); 

या आप एक इटरेटर और अग्रिम में अनुदेश सूचक बदल सकती है यह:

BasicBlock::iterator it(I); 
it++; 
Builder.SetInsertPoint(it); 
+0

बिल्कुल वही जो मैं खोज रहा था। धन्यवाद। किसी भी कारण से हमें इसे अगले निर्देश से पहले क्यों सेट करना चाहिए और इसके बाद नहीं? – Prateek

+0

@Prateek बस एक अनुमान - अवधारणात्मक रूप से। यदि सम्मिलन बिंदु एक निर्देश से पहले है, तो आप अनुक्रम में निर्देशों का एक गुच्छा डाल सकते हैं और सम्मिलित बिंदु को बदलने की आवश्यकता नहीं है। यदि सम्मिलन बिंदु एक निर्देश के बाद था, तब तक जब तक आप प्रत्येक सम्मिलन के बीच सम्मिलित बिंदु को अग्रिम नहीं करते हैं, तब तक आपके द्वारा डाले गए प्रत्येक नए निर्देश अंतिम (पहले मूल बिंदु के बाद) से पहले होंगे। तो आप रिवर्स में निर्देश डालना होगा। –

+0

यह इतना समझ में आता है। अपनी टिप्पणी पढ़ने के बाद भी कुछ मिनट लग गए। मुझे लगता है कि अब मैं समझता हूँ। धन्यवाद @Ismail – Prateek

संबंधित मुद्दे