2015-10-25 6 views

Odpowiedz

6

Punkt wstawienia nie może być ustawiony po podanej instrukcji - zamiast tego należy ustawić go przed następną instrukcją.

Aby uzyskać wskaźnik do następnej instrukcji, można użyć metody getNextNode() który jest dostępny na Instruction:

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

czy można włączyć wskaźnik instrukcji do iteratora i przesuwania go:

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

Dokładnie to, czego szukałem. Dziękuję Ci. Każdy powód, dla którego powinniśmy ustawić go przed następną instrukcją, a nie po niej? – Prateek

+0

@Prateek Just a guess - koncepcyjnie. jeśli punkt wstawienia znajduje się przed instrukcją, możesz wstawić kilka instrukcji w sekwencji, a punkt wstawienia nie musi się zmieniać. Jeśli punkt wstawienia był po instrukcji, to jeśli nie wstawisz punktu wstawienia między każdą wstawką, każda nowa instrukcja wstawiana będzie przed ostatnią (zaraz po oryginale punkt wstawienia). Więc wstawiałbyś instrukcje w odwrotnej kolejności. –

+0

To ma taki sens. Zajęło mi kilka minut myślenie nawet po przeczytaniu twojego komentarza. Myślę, że teraz rozumiem. Dzięki @Ismail – Prateek

Powiązane problemy