LLVM
-O0
の最適化を使用してCコードをコンパイルしました。LLVM IRをより高い最適化レベルに変換します
-O0
LLVM IRコードを-O3
LLVM
「Cコードなし」に変換するにはどうすればよいですか?
私は以下試してみました:
clang -O3 -S -emit-llvm O0.ll -o O3.ll
と
opt -O3 -S O0.ll -o O3.ll
が、出力はまだ
-O0
レベルです。
ありがとうございます。
LLVM
-O0
の最適化を使用してCコードをコンパイルしました。LLVM IRをより高い最適化レベルに変換します
-O0
LLVM IRコードを-O3
LLVM
「Cコードなし」に変換するにはどうすればよいですか?
私は以下試してみました:
clang -O3 -S -emit-llvm O0.ll -o O3.ll
と
opt -O3 -S O0.ll -o O3.ll
が、出力はまだ
-O0
レベルです。
ありがとうございます。
変更がいつ起こったのか分かりません(LLVM
3.9.0以降と思われます)。ただし、ビットコード関数をコンパイルすると、optnone
属性でアノテートされ、さらに最適化が実行されません。
関連するSOのディスカッションhereをご覧ください。提案された何
はこれを行うことです:LLVM
3.8.0およびそれ以前については
clang -emit-llvm -O1 -mllvm -disable-llvm-optzns -disable-llvm-passes foo.c -o foo.bc
を(と思う)あなたがすでにやっている何十分です。
そのビットコード(なし)を取得すると、すでに行っているようにopt
を使用できます。
'opt'は、あなたが期待していることをすべきです。サンプルを投稿できますか?彼らは同じですか? –
[Clangが自動的に自分の関数に属性を追加するのはなぜですか?](https://stackoverflow.com/questions/47504219/why-is-clang-automatically-adding-attributes-to-my-functions) –