Optimization 我如何看到LLVM使用了哪些优化过程';选择什么?

Optimization 我如何看到LLVM使用了哪些优化过程';选择什么?,optimization,llvm,Optimization,Llvm,我想了解并修改LLVM的opt中针对不同硬件架构使用的过程。假设您使用的是clang,使用-debug pass=Arguments选项查看在每个优化级别运行的过程可以告诉您在给定的LLVM IR上运行的过程: $ opt -O2 -debug-pass=Arguments example_file.ll -disable-output Pass Arguments: -tti -no-aa -tbaa -scoped-noalias -assumption-cache-tracker -ta

我想了解并修改LLVM的
opt
中针对不同硬件架构使用的过程。

假设您使用的是clang,使用-debug pass=Arguments选项查看在每个优化级别运行的过程可以告诉您在给定的LLVM IR上运行的过程:

$ opt -O2 -debug-pass=Arguments example_file.ll -disable-output
Pass Arguments:  -tti -no-aa -tbaa -scoped-noalias -assumption-cache-tracker -targetlibinfo -basicaa -verify -simplifycfg -domtree -sroa -early-cse -lower-expect
Pass Arguments:  -targetlibinfo -tti -no-aa -tbaa -scoped-noalias -assumption-cache-tracker -basicaa -ipsccp -globalopt -deadargelim -domtree -instcombine -simplifycfg -basiccg -prune-eh -inline-cost -inline -functionattrs -domtree -sroa -early-cse -lazy-value-info -jump-threading -correlated-propagation -simplifycfg -domtree -instcombine -tailcallelim -simplifycfg -reassociate -domtree -loops -loop-simplify -lcssa -loop-rotate -licm -loop-unswitch -instcombine -scalar-evolution -loop-simplify -lcssa -indvars -loop-idiom -loop-deletion -loop-unroll -mldst-motion -domtree -memdep -gvn -memdep -memcpyopt -sccp -domtree -bdce -instcombine -lazy-value-info -jump-threading -correlated-propagation -domtree -memdep -dse -loops -loop-simplify -lcssa -licm -adce -simplifycfg -domtree -instcombine -barrier -float2int -domtree -loops -loop-simplify -lcssa -loop-rotate -branch-prob -block-freq -scalar-evolution -loop-accesses -loop-vectorize -instcombine -scalar-evolution -slp-vectorizer -simplifycfg -domtree -instcombine -loops -loop-simplify -lcssa -scalar-evolution -loop-unroll -instcombine -loop-simplify -lcssa -licm -scalar-evolution -alignment-from-assumptions -strip-dead-prototypes -elim-avail-extern -globaldce -constmerge -verify
查看源代码,这通常是一个问题:

实例化和调用。 然后是建筑商


请注意,对于其他语言,和可能不是最佳选择。

我没有使用clang,而是使用从另一个编译器以LLVM IR格式生成的IR文件,我想尝试使用opt-in(.ll)文件,修改一些opt的功能以查看其影响,主要是想删除X86专用密码为什么它们是两个密码参数列表?