将LLVM IR转换为更高的优化级别

时间:2017-12-14 03:41:01

标签: clang llvm llvm-clang llvm-ir

我已使用LLVM优化将C代码编译为-O0 IR代码。

如何将此-O0 LLVM IR代码转换为-O3 LLVM IR代码"不使用C代码"?

我在下面尝试过:

clang -O3 -S -emit-llvm O0.ll -o O3.ll

opt -O3 -S O0.ll -o O3.ll

但输出仍为-O0级别。

谢谢。

1 个答案:

答案 0 :(得分:1)

我不确定更改何时发生(我认为它是LLVM 3.9.0及以上),但是当您编译为bitcode函数时,请使用optnone进行注释不执行属性和进一步优化。

查看相关的SO讨论here

建议做的是:

clang -emit-llvm -O1 -mllvm -disable-llvm-optzns -disable-llvm-passes foo.c -o foo.bc

对于LLVM 3.8.0及更早版本(我认为)你已经做的就足够了。

因此,一旦你获得了那个bitcode(没有optnone)参数,就可以使用opt,因为你已经在做了。

相关问题