LLVMIRコードで動作するLLVMパスを作成しています。目的の一部は、グローバル変数の初期値を読み取ることです。グローバル変数は、基本型から構造体やクラスまで、あらゆる型である可能性があります。どうすればそれを達成できますか?
1539 次
1 に答える
4
インスタンスで呼び出すgetInitializer
と、タイプの初期化子を取得します(ただし、最初に、またはその姉妹メソッドの1つを呼び出して、初期化子が存在することを確認してください)。また、IIRCグローバル変数と定数は同じものとして実装されているため、必要がない場合は、を使用して定数を除外します。GlobalVariable
Constant
hasInitializer
isConstant
もちろん、aConstant
は抽象基本クラスです。実際のタイプはその子の1つになります。これは、ドキュメントページに表示される図で確認できます。isa
//を介して通常の方法で実際の定数型を照会して取得するcast
かdyn_cast
、またはそれを使用getType
して(定数はValue
結局のところ)、そこから作業することができます。
最後に、 /イテレータをModule
使用するか、それを使用するだけですべてのグローバル変数を取得します(独自のイテレータがあります)。global_begin
global_end
getGlobalList
于 2013-02-03T12:51:44.697 に答える