<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Sep 30, 2019 at 9:48 AM David Fernandez Lobon via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
<div bgcolor="#FFFFFF">
<p>Hello LLVM Developers:<br>
<br>
I used this command , <b>llvm-as < /dev/null | opt -O3
-disable-output -debug-pass=Arguments</b>, <br>
</p>
<p>to take differents transformations of LLVM. I need to know if the
order of this transformations how appear in the output of the
command is the order to apply the differences flags to opt or what
is the meaning?:</p></div></blockquote><div>Not sure if I understand what you're asking, the output is a dump of the pass pipeline, which is roughly what you need to give as command line argument to opt to reproduce the execution.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div bgcolor="#FFFFFF">
<p>Pass Arguments: -tti -tbaa -scoped-noalias
-assumption-cache-tracker -targetlibinfo -verify -ee-instrument
-simplifycfg -domtree -sroa -early-cse -lower-expect<br>
Pass Arguments: -targetlibinfo -tti -tbaa -scoped-noalias
-assumption-cache-tracker -profile-summary-info -forceattrs
-inferattrs -domtree -callsite-splitting -ipsccp
-called-value-propagation -globalopt -domtree -mem2reg
-deadargelim -domtree -basicaa -aa -loops -lazy-branch-prob
-lazy-block-freq -opt-remark-emitter -instcombine -simplifycfg
-basiccg -globals-aa -prune-eh -inline -functionattrs
-argpromotion -domtree -sroa -basicaa -aa -memoryssa
-early-cse-memssa -speculative-execution -basicaa -aa
-lazy-value-info -jump-threading -correlated-propagation
-simplifycfg -domtree -aggressive-instcombine -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 -basicaa -aa -loops -lazy-branch-prob
-lazy-block-freq -opt-remark-emitter -tailcallelim -simplifycfg
-reassociate -domtree -loops -loop-simplify -lcssa-verification
-lcssa -basicaa -aa -scalar-evolution -loop-rotate -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
-mldst-motion -phi-values -basicaa -aa -memdep -lazy-branch-prob
-lazy-block-freq -opt-remark-emitter -gvn -phi-values -basicaa -aa
-memdep -memcpyopt -sccp -demanded-bits -bdce -basicaa -aa -loops
-lazy-branch-prob -lazy-block-freq -opt-remark-emitter
-instcombine -lazy-value-info -jump-threading
-correlated-propagation -basicaa -aa -phi-values -memdep -dse
-loops -loop-simplify -lcssa-verification -lcssa -basicaa -aa
-scalar-evolution -licm -postdomtree -adce -simplifycfg -domtree
-basicaa -aa -loops -lazy-branch-prob -lazy-block-freq
-opt-remark-emitter -instcombine -barrier -elim-avail-extern
-basiccg -rpo-functionattrs -globalopt -globaldce -basiccg
-globals-aa -float2int -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 -loop-load-elim -basicaa -aa -lazy-branch-prob
-lazy-block-freq -opt-remark-emitter -instcombine -simplifycfg
-domtree -loops -scalar-evolution -basicaa -aa -demanded-bits
-lazy-branch-prob -lazy-block-freq -opt-remark-emitter
-slp-vectorizer -opt-remark-emitter -instcombine -loop-simplify
-lcssa-verification -lcssa -scalar-evolution -loop-unroll
-lazy-branch-prob -lazy-block-freq -opt-remark-emitter
-instcombine -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 -globaldce -constmerge -domtree -loops
-branch-prob -block-freq -loop-simplify -lcssa-verification -lcssa
-basicaa -aa -scalar-evolution -branch-prob -block-freq -loop-sink
-lazy-branch-prob -lazy-block-freq -opt-remark-emitter
-instsimplify -div-rem-pairs -simplifycfg -verify<br>
Pass Arguments: -domtree<br>
Pass Arguments: -targetlibinfo -domtree -loops -branch-prob
-block-freq<br>
Pass Arguments: -targetlibinfo -domtree -loops -branch-prob
-block-freq</p>
<p>And also I would to know the meaning of the differences appears
of Pass Arguments, it is a differences invokes of opt command ?</p></div></blockquote><div><br></div><div>The `-O3` shortcut is using the PassManagerBuilder which created multiple pass pipelines and run them in sequences.</div><div>(I'm actually surprising about the last three though).</div><div><br></div><div>-- </div><div>Mehdi</div><div><br></div></div></div>