2015-10-25 13 views
5

LLVM IRBuilder関数SetInsertPoint(Instruction * I)は、作成された命令を指定された命令の前に挿入する必要があることを指定します。LLVM IRBuilder:特定の命令の後に挿入ポイントを設定する

特定の命令の後に挿入ポイントを設定するにはどうすればよいですか?私はそれを直接行うことができる機能を見つけることができません。

答えて

6

インサートポイントは、指定された命令の後に設定することはできません。代わりに、次の命令の前に設定する必要があります。

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

か、イテレータに命令ポインタをオンにし、それを進めることができます::

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

次の命令へのポインタを取得するには、Instructionで提供されていますgetNextNode()メソッドを使用することができます

+0

私が探していたものです。ありがとうございました。次の指示の前にそれを設定しなければならない理由はありますか? – Prateek

+0

@Prateekちょうど推測 - 概念的に。挿入ポイントが命令の前にある場合、一連の命令を順番に挿入することができ、挿入ポイントを変更する必要はありません。インサートポイントが命令の後にあった場合は、インサートポイントをすべてのインサートの間に進めない限り、挿入する新しい命令は最後のインサートの直前(インサートポイントの直後)になります。命令を逆に挿入することになります。 –

+0

それはとても意味があります。あなたのコメントを読んだ後でも数分考えました。私は今理解していると思う。ありがとう@Ismail – Prateek

関連する問題