1

LLVMIRコードで動作するLLVMパスを作成しています。目的の一部は、グローバル変数の初期値を読み取ることです。グローバル変数は、基本型から構造体やクラスまで、あらゆる型である可能性があります。どうすればそれを達成できますか?

4

1 に答える 1

4

インスタンスで呼び出すgetInitializerと、タイプの初期化子を取得します(ただし、最初に、またはその姉妹メソッドの1つを呼び出して、初期化子が存在することを確認してください)。また、IIRCグローバル変数と定数は同じものとして実装されているため、必要がない場合は、を使用して定数を除外します。GlobalVariableConstanthasInitializerisConstant

もちろん、aConstantは抽象基本クラスです。実際のタイプはその子の1つになります。これは、ドキュメントページに表示される図で確認できます。isa//を介して通常の方法で実際の定数型を照会して取得するcastdyn_cast、またはそれを使用getTypeして(定数はValue結局のところ)、そこから作業することができます。

最後に、 /イテレータをModule使用するか、それを使用するだけですべてのグローバル変数を取得します(独自のイテレータがあります)。global_beginglobal_endgetGlobalList

于 2013-02-03T12:51:44.697 に答える