海合会, 手动解释了什么是-O3
, -Os
等地转化为具体的优化参数(条款-funswitch-loops
, -fcompare-elim
等)
我正在寻找一个铛相同的信息 。
我看了网上和man clang
只给出一般信息( -O2
优化了超过-O1
, -Os
速度优化,......),还看了这里堆栈溢出,发现这个 ,但我还没有发现任何有关在引用的源文件。
编辑:我找到了答案,但我仍然有兴趣 ,如果任何人有一个链接,用户手册,记录所有优化过程,以及所选择的通行证-O x
。 目前,我只是发现这个通行证的名单,但没有优化级别。
我发现这个相关的问题。
概括起来,找出有关编译器优化过程:
llvm-as < /dev/null | opt -O3 -disable-output -debug-pass=Arguments
正如杰夫·尼克松的答案(+1)指出, clang
还运行了一些更高级别的优化,我们可以检索:
echo 'int;' | clang -xc -O3 - -o /dev/null -\#\#\#
各道的文档,请点击这里 。
随着6.0版本的通行证如下:
随着3.8版本的通行证如下:
用3.7版的通行证如下(解析的命令的输出以上):
对于3.6版本的传球在GYUNGMIN KIM的岗位作为记录。
用3.5版的通行证如下(解析的命令的输出以上):
用3.4版的通行证如下(解析的命令的输出以上):
用3.2版的通行证如下(解析的命令的输出以上):
编辑 [2014年3月]除去从列表重复。
编辑 [2014年4月]添加文档链接+选项3.4
编辑 [2014年9月]添加的选项3.5
编辑 [2015年12月]添加选项3.7和提3.6现有答案
编辑 [2016年5月]添加选项3.8,对于opt和铛和提现的答案铛(与OPT)
编辑 [2018年11月]添加选项为6.0
@安东尼的回答(和链接的其他问题)精确地描述启用的LLVM优化,但也有一些其他锵特定的选项(即那些影响降低到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 -help
clang -cc1 -help
clang -cc1 -mllvm -help
clang -cc1 -mllvm -help-list-hidden
clang -cc1as -help
LVM 3.6 -O1
传递参数:-targetlibinfo -no-AA -tbaa -scoped-noalias -assumption缓存跟踪器-basicaa -notti -verify二-ipsccp -globalopt -deadargelim -domtree -instcombine -simplifycfg -basiccg -prune-EH -inline-成本-always内联-functionattrs -sroa -domtree - 提早-CSE -lazy - 值信息 - 跳转线程-correlated传播-simplifycfg -domtree -instcombine -tailcallelim -simplifycfg -reassociate -domtree -loops -loop-简化 - lcssa -loop-旋转-licm -loop-unswitch -instcombine -scalar进化-loop,简化-lcssa -indvars -loop-成语-loop缺失-function_tti -loop-UNROLL -memdep -memcpyopt -sccp -domtree -instcombine - 懒 - 值信息 - 跳转线程-correlated传播-domtree -memdep -dse -adce -simplifycfg -domtree -instcombine -barrier -domtree -loops -loop-简化-lcssa分枝-概率 - 嵌段 - 频率-scalar-进化-loop-矢量化-instcombine -simplifycfg -domtree -instcombine -loops -loop-简化-lcssa -scalar进化-function_tti -loop-UNROLL -alignment从 - 一个 ssumptions -strip死的原型-verify -verify二
在-O1 -O2基地
添加:-inline -mldst运动-domtree -memdep -gvn -memdep -scalar进化-slp,向量化-globaldce -constmerge
并删除:-always内联
-O3基于-02
添加:-argpromotion