【问题标题】:How do I see what optimisation passes are used by LLVM's opt?我如何查看 LLVM 的 opt 使用了哪些优化通道?
【发布时间】:2013-02-12 10:07:39
【问题描述】:

我想了解和修改 LLVM 的 opt 中针对不同硬件架构使用的通行证。

【问题讨论】:

    标签: optimization llvm


    【解决方案1】:

    opt 可以告诉您它在给定的 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
    

    看源码,一般是这样的:

    实例化 PassManagerBuilder 并调用 SetOptLevel。 然后生成器adds the passes as part of populateModulePassManager

    请注意,the default pass orderings have been tuned for C/C++ 可能不适用于其他语言。

    【讨论】:

    • 为什么它们是两个 Pass Arguments 列表?
    【解决方案2】:

    假设您使用的是 clang,请使用 -debug-pass=Arguments 选项查看在每个优化级别运行的通道

    【讨论】:

    • 我没有使用 clang,而是使用从另一个编译器生成的 LLVM IR 格式的 IR 文件,我想尝试 opt in (.ll) 文件并修改一些 opt 的功能以查看其影响,主要是想删除 X86 专用通行证
    猜你喜欢
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 2018-12-11
    • 1970-01-01
    • 2020-11-04
    相关资源
    最近更新 更多