3
是否可以在任何代碼上運行gcc優化傳遞並最終獲得llvm IR?我想用gcc中的dead store消除。我知道llvm也有這個通行證,但它不像gcc那樣先進。DragonEgg可以運行gcc中的優化傳遞並生成llvm IR嗎?
是否可以在任何代碼上運行gcc優化傳遞並最終獲得llvm IR?我想用gcc中的dead store消除。我知道llvm也有這個通行證,但它不像gcc那樣先進。DragonEgg可以運行gcc中的優化傳遞並生成llvm IR嗎?
我沒有與它的經驗,我沒有試過,但我認爲下面的命令行應在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
使DragonEgg-O0
關閉所有GCC優化過程-fdse
開啓消除GCC死存儲-fplugin-arg-dragonegg-enable-gcc-optzns
使GCC的優化在DragonEgg-fplugin-arg-dragonegg-llvm-ir-optimize=2
力量LLVM以優化-O2
,而不是按照海合會優化級別-fplugin-arg-dragonegg-emit-ir
產生LLVM IR代替asm,它根據問題是你想要的這裏-S
因爲你有時需要它當你使用-fplugin-arg-dragonegg-emit-ir
而且這應該適用於任何GCC tree pass。
如果您需要更細粒度的控制,您可以調整DragonEgg:正確的編輯位置是函數Backend.cpp - 您可以精確地看到它如何設置通行證在那裏運行。