私は、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 システムで実行しています。