任意のコードで gcc 最適化パスを実行し、最終的に llvm IR を取得することは可能ですか? gcc で利用できるデッド ストアの削除を使用したい。llvm にもこのパスがあることは承知していますが、gcc ほど高度ではありません。
質問する
308 次
1 に答える
2
私は経験がなく、試したこともありませんが、次のコマンドラインは DragonEgg バージョン 3.0 以降で動作するはずです。
-fplugin=./dragonegg.so -O0 -fdse -fplugin-arg-dragonegg-enable-gcc-optzns -fplugin-arg-dragonegg-llvm-ir-optimize=2 -fplugin-arg-dragonegg-emit-ir -S
-fplugin=./dragonegg.so
ドラゴンエッグを有効にする-O0
すべての GCC 最適化パスをオフにします-fdse
GCCデッドストアの削除をオンにします-fplugin-arg-dragonegg-enable-gcc-optzns
DragonEgg で GCC 最適化を有効にします-fplugin-arg-dragonegg-llvm-ir-optimize=2
-O2
GCC 最適化レベルに従うのではなく、LLVM に最適化を強制します。-fplugin-arg-dragonegg-emit-ir
asm の代わりに LLVM IR を生成します。これは、質問によると、ここで必要なものです-S
使うときにちょっと必要だから-fplugin-arg-dragonegg-emit-ir
そして、これはどのGCC ツリー パスでも機能するはずです。
これより細かい制御が必要な場合は、DragonEgg を微調整できます。編集する正しい場所は、Backend.cppplugin_init
内の関数です。そこで実行するパスがどのように設定されているかを正確に確認できます。
于 2013-08-15T08:32:47.050 に答える