Python で LLVM IR を解析し、基本的な型情報を取得する方法はありますか? たとえば、各関数の引数が持つ Type を知りたいです。
llvmliteには、LLVM IR とバイトコードを解析するための基本的な機能があります。ただし、私が知る限り、型情報を提供することはできません。結果のTypeにはいくつかの基本的なメソッドしかなく、 LLVM APIを実装して、たとえば ifisIntegerTy
またはgetIntegerBitWidth()
. そのため、llvmlite は引数の数だけを教えてくれます。引数がブール値、整数、浮動小数点のいずれであるかはわかりません。llvmpy はさらに少ないです。
LLVM タイプを教えてくれる Python API はありますか? そうでない場合、これを行うために C 関数を呼び出す簡単な方法はありますか? そうでない場合、Python からこの情報を取得するにはどうすればよいですか?