Tru*_* Ta 1 optimization llvm llvm-clang llvm-ir bitcode
我想知道是否可以让 LLVMopt工具详细报告在每个优化级别(如-O1、-O2等)期间成功使用了哪些优化通道。
例如,这是文件的简单位码foo.bc:
define dso_local i32 @main() #0 {
%1 = alloca i32, align 4
%2 = alloca i32, align 4
%3 = alloca i32, align 4
store i32 0, i32* %1, align 4
store i32 1, i32* %2, align 4
store i32 1, i32* %3, align 4
%4 = load i32, i32* %2, align 4
ret i32 %4
}
Run Code Online (Sandbox Code Playgroud)
这是运行后获得的bitcodeopt -O1 foo.bc -o foo.opt.bc
; Function Attrs: noinline norecurse nounwind readnone uwtable
define dso_local i32 @main() local_unnamed_addr #0 {
ret i32 1
}
Run Code Online (Sandbox Code Playgroud)
如何获取有关 LLVMopt在上述优化中应用的通道的信息?
我尝试使用optLLVM 10.0 的几个标志,例如--pass-remarks-filter、--debugify-each、--verify-each、--lto-pass-remarks-filter等,但它们都不起作用。
有谁知道如何获得此类信息?
查看-debug-pass选项系列:
opt --help-list-hidden | grep debug-pass -A 5\n --debug-pass=<value> - Print PassManager debugging information\n =Disabled - disable debug output\n =Arguments - print pass arguments to pass to \'opt\'\n =Structure - print pass structure before run()\n =Executions - print pass name before it is executed\n =Details - print pass details when it is executed\nRun Code Online (Sandbox Code Playgroud)\nopt --help-list-hidden | grep debug-pass -A 5\n --debug-pass=<value> - Print PassManager debugging information\n =Disabled - disable debug output\n =Arguments - print pass arguments to pass to \'opt\'\n =Structure - print pass structure before run()\n =Executions - print pass name before it is executed\n =Details - print pass details when it is executed\nRun Code Online (Sandbox Code Playgroud)\n$ opt -O1 foo.bc -debug-pass=Arguments -o /dev/null\nPass Arguments: -tti -tbaa -scoped-noalias -assumption-cache-tracker -targetlibinfo -verify -ee-instrument -simplifycfg -domtree -sroa -early-cse -lower-expect\nPass Arguments: -targetlibinfo -tti -targetpassconfig -tbaa -scoped-noalias -assumption-cache-tracker -profile-summary-info -forceattrs -inferattrs -ipsccp -called-value-propagation -attributor -globalopt -domtree -mem2reg -deadargelim -domtree -basicaa -aa -loops -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -simplifycfg -basiccg -globals-aa -prune-eh -always-inline -functionattrs -domtree -sroa -basicaa -aa -memoryssa -early-cse-memssa -simplifycfg -domtree -basicaa -aa -loops -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -libcalls-shrinkwrap -loops -branch-prob -block-freq -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -pgo-memop-opt -simplifycfg -reassociate -domtree -loops -loop-simplify -lcssa-verification -lcssa -basicaa -aa -scalar-evolution -loop-rotate -memoryssa -licm -loop-unswitch -simplifycfg -domtree -basicaa -aa -loops -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -loop-simplify -lcssa-verification -lcssa -scalar-evolution -indvars -loop-idiom -loop-deletion -loop-unroll -phi-values -memdep -memcpyopt -sccp -demanded-bits -bdce -basicaa -aa -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -postdomtree -adce -simplifycfg -domtree -basicaa -aa -loops -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -barrier -basiccg -rpo-functionattrs -globalopt -globaldce -basiccg -globals-aa -domtree -float2int -lower-constant-intrinsics -domtree -loops -loop-simplify -lcssa-verification -lcssa -basicaa -aa -scalar-evolution -loop-rotate -loop-accesses -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -loop-distribute -branch-prob -block-freq -scalar-evolution -basicaa -aa -loop-accesses -demanded-bits -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -loop-vectorize -loop-simplify -scalar-evolution -aa -loop-accesses -lazy-branch-prob -lazy-block-freq -loop-load-elim -basicaa -aa -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -simplifycfg -domtree -basicaa -aa -loops -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -loop-simplify -lcssa-verification -lcssa -scalar-evolution -loop-unroll -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -memoryssa -loop-simplify -lcssa-verification -lcssa -scalar-evolution -licm -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -transform-warning -alignment-from-assumptions -strip-dead-prototypes -domtree -loops -branch-prob -block-freq -loop-simplify -lcssa-verification -lcssa -basicaa -aa -scalar-evolution -block-freq -loop-sink -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instsimplify -div-rem-pairs -simplifycfg -verify -write-bitcode\nPass Arguments: -domtree\nPass Arguments: -targetlibinfo -domtree -loops -branch-prob -block-freq\nPass Arguments: -targetlibinfo -domtree -loops -branch-prob -block-freq\nRun Code Online (Sandbox Code Playgroud)\n$ opt -O1 foo.bc -debug-pass=Structure -o /dev/null\nPass Arguments: -tti -tbaa -scoped-noalias -assumption-cache-tracker -targetlibinfo -verify -ee-instrument -simplifycfg -domtree -sroa -early-cse -lower-expect\nTarget Transform Information\nType-Based Alias Analysis\nScoped NoAlias Alias Analysis\nAssumption Cache Tracker\nTarget Library Information\n FunctionPass Manager\n Module Verifier\n Instrument function entry/exit with calls to e.g. mcount() (pre inlining)\n Simplify the CFG\n Dominator Tree Construction\n SROA\n Early CSE\n Lower \'expect\' Intrinsics\nPass Arguments: -targetlibinfo -tti -targetpassconfig -tbaa -scoped-noalias -assumption-cache-tracker -profile-summary-info -forceattrs -inferattrs -ipsccp -called-value-propagation -attributor -globalopt -domtree -mem2reg -deadargelim -domtree -basicaa -aa -loops -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -simplifycfg -basiccg -globals-aa -prune-eh -always-inline -functionattrs -domtree -sroa -basicaa -aa -memoryssa -early-cse-memssa -simplifycfg -domtree -basicaa -aa -loops -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -libcalls-shrinkwrap -loops -branch-prob -block-freq -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -pgo-memop-opt -simplifycfg -reassociate -domtree -loops -loop-simplify -lcssa-verification -lcssa -basicaa -aa -scalar-evolution -loop-rotate -memoryssa -licm -loop-unswitch -simplifycfg -domtree -basicaa -aa -loops -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -loop-simplify -lcssa-verification -lcssa -scalar-evolution -indvars -loop-idiom -loop-deletion -loop-unroll -phi-values -memdep -memcpyopt -sccp -demanded-bits -bdce -basicaa -aa -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -postdomtree -adce -simplifycfg -domtree -basicaa -aa -loops -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -barrier -basiccg -rpo-functionattrs -globalopt -globaldce -basiccg -globals-aa -domtree -float2int -lower-constant-intrinsics -domtree -loops -loop-simplify -lcssa-verification -lcssa -basicaa -aa -scalar-evolution -loop-rotate -loop-accesses -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -loop-distribute -branch-prob -block-freq -scalar-evolution -basicaa -aa -loop-accesses -demanded-bits -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -loop-vectorize -loop-simplify -scalar-evolution -aa -loop-accesses -lazy-branch-prob -lazy-block-freq -loop-load-elim -basicaa -aa -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -simplifycfg -domtree -basicaa -aa -loops -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -loop-simplify -lcssa-verification -lcssa -scalar-evolution -loop-unroll -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -memoryssa -loop-simplify -lcssa-verification -lcssa -scalar-evolution -licm -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -transform-warning -alignment-from-assumptions -strip-dead-prototypes -domtree -loops -branch-prob -block-freq -loop-simplify -lcssa-verification -lcssa -basicaa -aa -scalar-evolution -block-freq -loop-sink -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instsimplify -div-rem-pairs -simplifycfg -verify -write-bitcode\nTarget Library Information\nTarget Transform Information\nTarget Pass Configuration\nType-Based Alias Analysis\nScoped NoAlias Alias Analysis\nAssumption Cache Tracker\nProfile summary info\n ModulePass Manager\n Force set function attributes\n Infer set function attributes\n Interprocedural Sparse Conditional Constant Propagation\n FunctionPass Manager\n Dominator Tree Construction\n Called Value Propagation\n Deduce and propagate attributes\n Global Variable Optimizer\n FunctionPass Manager\n Dominator Tree Construction\n Natural Loop Information\n Branch Probability Analysis\n Block Frequency Analysis\n FunctionPass Manager\n Dominator Tree Construction\n Promote Memory to Register\n Dead Argument Elimination\n FunctionPass Manager\n Dominator Tree Construction\n Basic Alias Analysis (stateless AA impl)\n Function Alias Analysis Results\n Natural Loop Information\n Lazy Branch Probability Analysis\n Lazy Block Frequency Analysis\n Optimization Remark Emitter\n Combine redundant instructions\n Simplify the CFG\n CallGraph Construction\n Globals Alias Analysis\n Call Graph SCC Pass Manager\n Remove unused exception handling info\n Inliner for always_inline functions\n Deduce function attributes\n FunctionPass Manager\n Dominator Tree Construction\n SROA\n Basic Alias Analysis (stateless AA impl)\n Function Alias Analysis Results\n Memory SSA\n Early CSE w/ MemorySSA\n Simplify the CFG\n Dominator Tree Construction\n Basic Alias Analysis (stateless AA impl)\n Function Alias Analysis Results\n Natural Loop Information\n Lazy Branch Probability Analysis\n Lazy Block Frequency Analysis\n Optimization Remark Emitter\n Combine redundant instructions\n Conditionally eliminate dead library calls\n Natural Loop Information\n Branch Probability Analysis\n Block Frequency Analysis\n Lazy Branch Probability Analysis\n Lazy Block Frequency Analysis\n Optimization Remark Emitter\n PGOMemOPSize\n Simplify the CFG\n Reassociate expressions\n Dominator Tree Construction\n Natural Loop Information\n Canonicalize natural loops\n LCSSA Verifier\n Loop-Closed SSA Form Pass\n Basic Alias Analysis (stateless AA impl)\n Function Alias Analysis Results\n Scalar Evolution Analysis\n Loop Pass Manager\n Rotate Loops\n Memory SSA\n Loop Pass Manager\n Loop Invariant Code Motion\n Unswitch loops\n Simplify the CFG\n Dominator Tree Construction\n Basic Alias Analysis (stateless AA impl)\n Function Alias Analysis Results\n Natural Loop Information\n Lazy Branch Probability Analysis\n Lazy Block Frequency Analysis\n Optimization Remark Emitter\n Combine redundant instructions\n Canonicalize natural loops\n LCSSA Verifier\n Loop-Closed SSA Form Pass\n Scalar Evolution Analysis\n Loop Pass Manager\n Induction Variable Simplification\n Recognize loop idioms\n Delete dead loops\n Unroll loops\n Phi Values Analysis\n Memory Dependence Analysis\n MemCpy Optimization\n Sparse Conditional Constant Propagation\n Demanded bits analysis\n Bit-Tracking Dead Code Elimination\n Basic Alias Analysis (stateless AA impl)\n Function Alias Analysis Results\n Lazy Branch Probability Analysis\n Lazy Block Frequency Analysis\n Optimization Remark Emitter\n Combine redundant instructions\n Post-Dominator Tree Construction\n Aggressive Dead Code Elimination\n Simplify the CFG\n Dominator Tree Construction\n Basic Alias Analysis (stateless AA impl)\n Function Alias Analysis Results\n Natural Loop Information\n Lazy Branch Probability Analysis\n Lazy Block Frequency Analysis\n Optimization Remark Emitter\n Combine redundant instructions\n A No-Op Barrier Pass\n CallGraph Construction\n Deduce function attributes in RPO\n Global Variable Optimizer\n FunctionPass Manager\n Dominator Tree Construction\n Natural Loop Information\n Branch Probability Analysis\n Block Frequency Analysis\n Dead Global Elimination\n CallGraph Construction\n Globals Alias Analysis\n FunctionPass Manager\n Dominator Tree Construction\n Float to int\n Lower constant intrinsics\n Dominator Tree Construction\n Natural Loop Information\n Canonicalize natural loops\n LCSSA Verifier\n Loop-Closed SSA Form Pass\n Basic Alias Analysis (stateless AA impl)\n Function Alias Analysis Results\n Scalar Evolution Analysis\n Loop Pass Manager\n Rotate Loops\n Loop Access Analysis\n Lazy Branch Probability Analysis\n Lazy Block Frequency Analysis\n Optimization Remark Emitter\n Loop Distribution\n Branch Probability Analysis\n Block Frequency Analysis\n Scalar Evolution Analysis\n Basic Alias Analysis (stateless AA impl)\n Function Alias Analysis Results\n Loop Access Analysis\n Demanded bits analysis\n Lazy Branch Probability Analysis\n Lazy Block Frequency Analysis\n Optimization Remark Emitter\n Loop Vectorization\n Canonicalize natural loops\n Scalar Evolution Analysis\n Function Alias Analysis Results\n Loop Access Analysis\n Lazy Branch Probability Analysis\n Lazy Block Frequency Analysis\n Loop Load Elimination\n Basic Alias Analysis (stateless AA impl)\n Function Alias Analysis Results\n Lazy Branch Probability Analysis\n Lazy Block Frequency Analysis\n Optimization Remark Emitter\n Combine redundant instructions\n Simplify the CFG\n Dominator Tree Construction\n Basic Alias Analysis (stateless AA impl)\n Function Alias Analysis Results\n Natural Loop Information\n Lazy Branch Probability Analysis\n Lazy Block Frequency Analysis\n Optimization Remark Emitter\n Combine redundant instructions\n Canonicalize natural loops\n LCSSA Verifier\n Loop-Closed SSA Form Pass\n Scalar Evolution Analysis\n Loop Pass Manager\n Unroll loops\n Lazy Branch Probability Analysis\n Lazy Block Frequency Analysis\n Optimization Remark Emitter\n Combine redundant instructions\n Memory SSA\n Canonicalize natural loops\n LCSSA Verifier\n Loop-Closed SSA Form Pass\n Scalar Evolution Analysis\n Loop Pass Manager\n Loop Invariant Code Motion\n Lazy Branch Probability Analysis\n Lazy Block Frequency Analysis\n Optimization Remark Emitter\n Warn about non-applied transformations\n Alignment from assumptions\n Strip Unused Function Prototypes\n FunctionPass Manager\n Dominator Tree Construction\n Natural Loop Information\n Branch Probability Analysis\n Block Frequency Analysis\n Canonicalize natural loops\n LCSSA Verifier\n Loop-Closed SSA Form Pass\n Basic Alias Analysis (stateless AA impl)\n Function Alias Analysis Results\n Scalar Evolution Analysis\n Block Frequency Analysis\n Loop Pass Manager\n Loop Sink\n Lazy Branch Probability Analysis\n Lazy Block Frequency Analysis\n Optimization Remark Emitter\n Remove redundant instructions\n Hoist/decompose integer division and remainder\n Simplify the CFG\n Module Verifier\n Bitcode Writer\nPass Arguments: -domtree\n FunctionPass Manager\n Dominator Tree Construction\nPass Arguments: -targetlibinfo -domtree -loops -branch-prob -block-freq\nTarget Library Information\n FunctionPass Manager\n Dominator Tree Construction\n Natural Loop Information\n Branch Probability Analysis\n Block Frequency Analysis\nPass Arguments: -targetlibinfo -domtree -loops -branch-prob -block-freq\nTarget Library Information\n FunctionPass Manager\n Dominator Tree Construction\n Natural Loop Information\n Branch Probability Analysis\n Block Frequency Analysis\nRun Code Online (Sandbox Code Playgroud)\n$ opt -O1 foo.bc -debug-pass=Details -o /dev/null\n\xe2\x80\xa6 (includes Structure level)\n[2020-07-15 12:12:50.727901681] 0x55963d24ca10 Executing Pass \'Force set function attributes\' on Module \'foo.bc\'...\n -*- \'Force set function attributes\' is the last user of following pass instances. Free these instances\n[2020-07-15 12:12:50.727919514] 0x55963d24ca10 Freeing Pass \'Force set function attributes\' on Module \'foo.bc\'...\n[2020-07-15 12:12:50.727930575] 0x55963d24ca10 Executing Pass \'Infer set function attributes\' on Module \'foo.bc\'...\n0x55963d229c20 Required Analyses: Target Library Information\n -*- \'Infer set function attributes\' is the last user of following pass instances. Free these instances\n[2020-07-15 12:12:50.727951877] 0x55963d24ca10 Freeing Pass \'Infer set function attributes\' on Module \'foo.bc\'...\n[2020-07-15 12:12:50.727962569] 0x55963d24ca10 Executing Pass \'Interprocedural Sparse Conditional Constant Propagation\' on Module \'foo.bc\'...\n0x55963d229c80 Required Analyses: Assumption Cache Tracker, Dominator Tree Construction, Target Library Information\n[2020-07-15 12:12:50.727991878] 0x55963d22aa00 Executing Pass \'Dominator Tree Construction\' on Function \'main\'...\n[2020-07-15 12:12:50.728019459] 0x55963d22aa00 Executing Pass \'Dominator Tree Construction\' on Function \'f\'...\n -*- \'Interprocedural Sparse Conditional Constant Propagation\' is the last user of following pass instances. Free these instances\n[2020-07-15 12:12:50.728048312] 0x55963d24ca10 Freeing Pass \
| 归档时间: |
|
| 查看次数: |
4757 次 |
| 最近记录: |