LLVm IR コードの関数で使用されるすべてのグローバル変数を収集したいと考えています。これを行うことができるLLVM APIはありますか? たとえば、`次のコードのように。
int a,b;
int fun(){return a+b;}
グローバル変数 a と b は fun() で使用されているため、a と b をセットで収集する必要があります。
LLVm IR コードの関数で使用されるすべてのグローバル変数を収集したいと考えています。これを行うことができるLLVM APIはありますか? たとえば、`次のコードのように。
int a,b;
int fun(){return a+b;}
グローバル変数 a と b は fun() で使用されているため、a と b をセットで収集する必要があります。
オークのソリューションが機能するはずです。より効率的なアプローチのために(典型的な翻訳単位で)それを追加します。私がすることはusers()
、各グローバル変数のリストをたどり( LLVMプログラマーマニュアルのこのセクションを参照)、それが表示される関数に注意することです.そして、それから推測します。
しかし、これは確かにトレードオフです。コードがほとんどなく、グローバルが多い (非典型的な) 翻訳単位がある場合は、Oak のソリューションの方が適しています。