llvm-bcanalyzer - LLVMビットコードアナライザ¶
概要¶
llvm-bcanalyzer [オプション] [ファイル名]
説明¶
llvm-bcanalyzerコマンドは、ビットコードファイルの解析を行う小型ユーティリティです。llvm-asツールなどで生成されたビットコードファイルを読み込み、その内容に関する統計レポートを出力します。また、低レベルながら人間が読める形式でビットコードファイルをダンプすることもできます。このツールは、ビットコードファイル形式を直接扱う開発者以外には、あまり関心や有用性がない可能性があります。ほとんどのLLVMユーザーはこのツールを無視しても問題ありません。
ファイル名が省略されているか-
の場合、llvm-bcanalyzerは標準入力から入力を読み取ります。これは、ツールをパイプラインに組み込む際に便利です。出力は標準出力に書き込まれます。
オプション¶
- --dump¶
llvm-bcanalyzerに、人間が読める形式でビットコードをダンプさせます。この形式はLLVMアセンブリとは大幅に異なり、ビットコードファイルのエンコードに関する詳細情報を提供します。
- --help¶
コマンドラインオプションの概要を出力します。
終了ステータス¶
llvm-bcanalyzerが成功すると、0で終了します。エラーが発生した場合は、通常1の非ゼロ値で終了します。
サマリー出力の定義¶
以下の項目は、llvm-bcanalyzerによって常に出力されます。これらはサマリー出力を構成します。
モジュールのビットコード解析
ビットコード解析が生成されるモジュールの名前を示します。
ビットコードバージョン番号
アナライザによって読み取られたファイルのビットコードバージョン(LLVMバージョンではありません)。
ファイルサイズ
ビットコードファイル全体のサイズ(バイト単位)。
モジュールバイト数
モジュールブロックのサイズ(バイト単位)。パーセンテージはファイルサイズに対する割合です。
関数バイト数
すべての関数ブロックのサイズ(バイト単位)。パーセンテージはファイルサイズに対する割合です。
グローバル型バイト数
グローバル型プールのサイズ(バイト単位)。パーセンテージはファイルサイズに対する割合です。これは、ビットコードファイル内のすべての型の定義のサイズです。
定数プールバイト数
定数プールブロックのサイズ(バイト単位)。パーセンテージはファイルサイズに対する割合です。
モジュールグローバルバイト数
グローバル変数の定義とその初期化子のサイズ(バイト単位)。パーセンテージはファイルサイズに対する割合です。
命令リストバイト数
すべての関数内のすべての命令リストのサイズ(バイト単位)。パーセンテージはファイルサイズに対する割合です。この値は関数バイト数にも含まれていることに注意してください。
圧縮テーブルバイト数
すべての関数内のすべての圧縮テーブルのサイズ(バイト単位)。パーセンテージはファイルサイズに対する割合です。この値は関数バイト数にも含まれていることに注意してください。
シンボルテーブルバイト数
すべての関数内のすべてのシンボルテーブルのサイズ(バイト単位)。パーセンテージはファイルサイズに対する割合です。この値は関数バイト数にも含まれていることに注意してください。
依存ライブラリバイト数
モジュール内の依存ライブラリのリストのサイズ(バイト単位)。パーセンテージはファイルサイズに対する割合です。この値はモジュールグローバルバイト数にも含まれていることに注意してください。
ビットコードブロック数
ビットコードファイル内のあらゆる種類のブロックの総数。
関数数
ビットコードファイル内の関数定義の総数。
型数
グローバル型プールで定義されている型の総数。
定数数
定数プールで定義されている定数の総数(あらゆる型)。
基本ブロック数
ビットコードファイル内のすべての関数で定義されている基本ブロックの総数。
命令数
ビットコードファイル内のすべての関数で定義されている命令の総数。
ロング命令数
ビットコードファイル内のすべての関数で定義されているロング命令の総数。ロング命令とは、4バイトより大きい命令です。通常、ロング命令は、複数のインデックスを持つGetElementPtr、PHIノード、および多数の引数を持つ関数の呼び出しです。
オペランド数
ビットコードファイル内のすべての命令で使用されているオペランドの総数。
圧縮テーブル数
ビットコードファイル内のすべての関数にある圧縮テーブルの総数。
シンボルテーブル数
ビットコードファイル内のすべての関数にあるシンボルテーブルの総数。
依存ライブラリ数
ビットコードファイルで見つかった依存ライブラリの総数。
命令サイズ合計
ビットコードファイル内のすべての関数にある命令の合計サイズ。
平均命令サイズ
ビットコードファイル内のすべての関数における1命令あたりの平均バイト数。この値は、命令サイズ合計を命令数で割って計算されます。
最大型スロット番号
型のスロット番号に使用される最大値。スロット番号の値が大きいほど、エンコードに多くのバイト数を要します。
最大値スロット番号
値のスロット番号に使用される最大値。スロット番号の値が大きいほど、エンコードに多くのバイト数を要します。
値あたりのバイト数
値定義(あらゆる型)の平均サイズ。これは、ファイルサイズをあらゆる型の値の総数で割って計算されます。
グローバルあたりのバイト数
グローバル定義(定数とグローバル変数)の平均サイズ。
関数あたりのバイト数
関数定義あたりの平均バイト数。これは、関数バイト数を関数数で割って計算されます。
VBR 32ビット整数の数
可変ビットレートエンコーディング方式を使用してエンコードされた32ビット整数の総数。
VBR 64ビット整数の数
可変ビットレートエンコーディング方式を使用してエンコードされた64ビット整数の総数。
VBR圧縮バイト数
可変ビットレートエンコーディング方式を使用する32ビット整数と64ビット整数によって消費されるバイト数の総数。
VBR展開バイト数
可変ビットレートエンコーディング方式で圧縮されなかった場合、32ビット整数と64ビット整数によって消費されていたであろうバイト数の総数。
VBRによるバイト数削減
可変ビットレートエンコーディング方式を使用することで節約されたバイト数の総数。パーセンテージはVBR展開バイト数に対する割合です。
詳細出力の定義¶
次の定義は、-nodetailsオプションが指定されていない場合にのみ発生します。詳細出力は、関数ごとに追加情報を提供します。
型
関数の型シグネチャ。
バイトサイズ
関数のブロック内のバイト数の合計。
基本ブロック
関数によって定義されている基本ブロックの数。
命令
関数によって定義されている命令の数。
ロング命令
関数内でロング命令形式を使用している命令の数。
オペランド
関数内のすべての命令で使用されているオペランドの数。
命令サイズ
関数内の命令によって消費されるバイト数。
平均命令サイズ
関数内の命令によって消費される平均バイト数。この値は、命令サイズを命令数で割って計算されます。
命令あたりのバイト数
関数内の命令あたりに使用される平均バイト数。この値は、バイトサイズを命令数で割って計算されます。これは平均命令サイズとは異なることに注意してください。命令リストのサイズだけでなく、関数の合計サイズに対する数値を計算します。
VBR 32ビット整数の数
この関数で見つかった32ビット整数の総数(あらゆる用途)。
VBR 64ビット整数の数
この関数で見つかった64ビット整数の総数(あらゆる用途)。
VBR圧縮バイト数
この関数内で、可変ビットレートエンコーディング方式を使用する32ビット整数と64ビット整数によって消費されるバイト数の合計。
VBR展開バイト数
可変ビットレートエンコーディング方式で圧縮されなかった場合、この関数内で32ビット整数と64ビット整数によって消費されていたであろうバイト数の合計。
VBRによるバイト数削減
可変ビットレートエンコーディング方式を使用することで、この関数内で節約されたバイト数の合計。パーセンテージはVBR展開バイト数に対する割合です。