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