2015-10-25 75 views

回答

6

插入點不能設置爲在給定指令之後 - 相反,您應該將其設置爲在下一條指令之前。

爲了獲得一個指向下一個指令,可以使用getNextNode()方法,可以用Instruction

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

,或者你可以把指令指針變成一個迭代器和推進它:

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

正是我在找的東西。謝謝。爲什麼我們應該在下一條指令之前設置它,而不是之後呢? – Prateek

+0

@Prateek只是一個猜測 - 概念上。如果插入點位於指令之前,則可以按順序插入一堆指令,插入點不需要更改。如果插入點位於指令之後,那麼除非在每個插入點之間插入點前移,否則插入的每條新指令都應位於最後一條插入點之前(緊接原始插入點之後)。所以你會反向插入指令。 –

+0

這很有道理。花了幾分鐘的時間思考即使在閱讀您的評論。我想我現在明白了。謝謝@Ismail – Prateek