我正在开发一个使用 LLVM 2.6 和 llvm-gcc 前端编译的项目。我正在尝试使用 LLVM 3.1 和 clang 测试编译它。当我这样做时,我收到以下关于 -O5 优化级别的错误消息:
error: invalid value '5' in '-O5'
但是,LLVM 2.6 和 llvm-gcc 可以正常使用该-O5
标志。我看到了有关 Clang 优化级别的以下文档:
-O0 -O1 -O2 -Os -O3 -O4
Specify which optimization level to use. -O0 means "no optimization": this level compiles the
fastest and generates the most debuggable code. -O2 is a moderate level of optimization which
enables most optimizations. -Os is like -O2 with extra optimizations to reduce code size. -O3
is like -O2, except that it enables optimizations that take longer to perform or that may
generate larger code (in an attempt to make the program run faster). On supported platforms, -O4
enables link-time optimization; object files are stored in the LLVM bitcode file format and whole
program optimization is done at link time. -O1 is somewhere between -O0 and -O2.
所以我试图弄清楚-O5
我正在使用的 Makefile 中首先在做什么(我没有编写 Makefile)。这是改变并曾经与 LLVM 一起使用的东西吗?或者它仍然是一个有用的功能,我只需要以其他方式激活它。
另外,如果它有用,我正在运行的给出错误的命令基本上是:
/bin/clang -g -c -mcmodel=medium -fstrict-aliasing -Wstrict-aliasing -O5 -emit-llvm -fkeep-inline-functions -fno-stack-protector -c -o foo.bc foo.cpp
另外,如果我在 Linux (Ubuntu 10.04) x86_64 系统上运行很重要。