1

Cプログラムで変換パス(デッドコードの削除など)によって行われた変更を確認する方法。ターミナルで次のコマンドを実行すると、IRを確認できる.bcファイルが作成されます。しかし、Cプログラムで -dce によって行われた変更を確認する方法。コマンド: $opt in.bc -o out.bc -dce

4

3 に答える 3

2

IR で行われた変更が C コードに反映されているのを確認することはできません。元の変換はありません。(以前は LLVM 用の C バックエンドがありましたが、(1) サポートされなくなり、(2) プログラムの形式ではなくセマンティクスのみが保持されます)。

できることは、デバッグ情報を使用してコンパイルし、LLVM 側から DCE の後にその情報を照会して、パスがソース コードにどのように影響したかを推測することです。

または、ソース コードで直接変換できることが重要な場合は、Clang のフロントエンド アクションのようなものを使用する必要がありますが、多くのロジックを自分で実装する必要があり、LLVM の最適化を楽しむことができませんでした。通過します。

于 2013-07-20T21:05:45.773 に答える
0

DCE パスを適用していて、パスによって行われた変更を特定したい場合は、llvm-nm を使用することをお勧めします。llvm-nm を使用すると、関数やデータ オブジェクトなど、ビットコード ファイル内のシンボルを表示できます。元のビットコード ファイルの llvm-nm の出力と最適化されたバージョンを比較することで、DCE パスによって削除された機能を特定できます。

于 2014-02-04T00:55:16.887 に答える