llvm-diff -構造の「diff」¶
概要¶
llvm-diff [オプション] モジュール 1 モジュール 2 [グローバル名 …]
説明¶
llvm-diff は 2 つの LLVM モジュールの構造を比較します。主に、関数定義の相違に焦点を当てています。グローバルの順序やローカル値の名前の変更など、マイナーな相違は無視されます。
入力モジュールの名前が「.ll」で終わる場合、アセンブリファイルとして解釈されます。それ以外の場合は、ビットコードファイルとして読み取られます。
グローバル名のリストが指定されている場合、その名前を持つ値のみが比較されます。それ以外の場合は、すべてのグローバル値が比較され、片方のモジュールにのみ表示されるグローバルについて診断が出力されます。
llvm-diff は、基本ブロックを比較して、2 つの関数を比較します。エントリブロックから始まります。ターミネータが一致する場合、対応する後続のブロックが比較されます。それ以外の場合は無視されます。このアルゴリズムは制御フローの変更に対して非常に敏感で、それ以降の変更が検出されない傾向があります。
llvm-diff は、LLVM パスとフロントエンドのライターのデバッグツールとして設計されています。安定した出力形式はありません。
終了ステータス¶
llvm-diff がモジュール間に相違を見つけないと、0 で終了し、出力を生成しません。それ以外の場合は、0 以外の値で終了します。
バグ¶
リンクや関数属性の変更など、多くの重要な相違が診断されません。
メモリ動作の変更(例: 読み込みの統合)により、ブロック内の相違が大量に検出される場合があります。