@Antoine的答案(和链接的其他问题)准确地描述了已启用的LLVM优化,但是还有其他一些受Clang影响的特定于Clang的选项(即那些影响降低AST的-O[0|1|2|3|fast]
选项)。
您可以通过以下方式查看这些内容:
echo 'int;' | clang -xc -O0 - -o /dev/null -\#\#\#
echo 'int;' | clang -xc -O1 - -o /dev/null -\#\#\#
echo 'int;' | clang -xc -O2 - -o /dev/null -\#\#\#
echo 'int;' | clang -xc -O3 - -o /dev/null -\#\#\#
echo 'int;' | clang -xc -Ofast - -o /dev/null -\#\#\#
例如,-O0
能够使-mrelax-all
,-O1
使-vectorize-loops
和-vectorize-slp
,并-Ofast
使得-menable-no-infs
,-menable-no-nans
,-menable-unsafe-fp-math
,-ffp-contract=fast
和-ffast-math
。
@Techogrebo:
是的,不需要不一定需要其他LLVM工具。尝试:
echo 'int;' | clang -xc - -o /dev/null -mllvm -print-all-options
另外,您可以单独使用Clang检查/修改很多更详细的选项……您只需要知道如何使用它们即可!
尝试以下几种:
clang -help
clang -cc1 -help
clang -cc1 -mllvm -help
clang -cc1 -mllvm -help-list-hidden
clang -cc1as -help