<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>