在clang中为-O4做了什么优化传递?

Ami*_*ash 5 llvm clang llvm-clang

我们正在尝试实现一个jit编译器,其性能应该与使用clang -o4一样.有没有一个地方我可以很容易地获得由-o4指定的clang调用的优化通道列表?

Mār*_*iko 9

据我所知-O4与-O3 +启用LTO(链接时间优化)的含义相同.请参阅以下代码片段:

另请参见这里:

您可以使用-emit-llvm或-flto从clang生成bitcode文件,或者使用与-O3 -flto同义的-O4标志生成bitcode文件.

对于与-O3标志一起使用的优化,请参阅此PassManagerBuilder.cpp文件(查找OptLevel变量 - 它将具有值3).

  • 注意:这不再正确.该手册现在明确指出"-O4和更高:当前相当于-O3".使用O4并认为他们正在进行LTO的人不是. (4认同)

小智 9

请注意,从LLVM版本5.1 -O4开始,不再意味着链接时间优化.如果你想要,你需要通过-flto.请参阅Xcode 5发行说明.

  • 在谈论LLVM而不是Apple LLVM版本时请使用LLVM版本 - LLVM当前为3.5,因此5.1不存在. (6认同)