<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Nov 13, 2019 at 6:58 AM Robinson, Paul 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:1px solid rgb(204,204,204);padding-left:1ex">





<div lang="EN-US">
<div class="gmail-m_-2926327337751794732WordSection1">
<p class="MsoNormal">Without actually trying it myself, I would say that the -O1 command line runs optimization passes where the -O0 command line does not.  Thus, your “baseline” IR is already somewhat optimized in the -O1 case.  If you want to see IR with
 no optimizations run at all, you want to add `-Xclang -disable-llvm-passes` to your command line for producing unoptimized IR.  I think this would produce the same results for -O0 and -O1.</p></div></div></blockquote><div><br>Except then you'll get optnone on functions at -O0 (this is so that the -O0 in one compilation is respected in LTO situations where it may be merged with another optimizing compilation)<br><br>While I don't think we have any guarantee that "clang <flags> -Xclang -disable-llvm-passes x.cpp -emit-llvm -o x.bc && clang <flags> x.bc" (& certainly not if the second step is opt, not clang) - it's certainly true if you don't pass the same flags to both the first and second, you may get different output (-O flags being the flagship here - it's not just the optnone thing, but lifetime markers and other things in Clang's IRGen that differ depending on optimization level).<br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div lang="EN-US"><div class="gmail-m_-2926327337751794732WordSection1"><p class="MsoNormal"><u></u><u></u></p>
<p class="MsoNormal">--paulr<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div style="border-top:none;border-right:none;border-bottom:none;border-left:1.5pt solid blue;padding:0in 0in 0in 4pt">
<div>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0in 0in">
<p class="MsoNormal"><b>From:</b> llvm-dev <<a href="mailto:llvm-dev-bounces@lists.llvm.org" target="_blank">llvm-dev-bounces@lists.llvm.org</a>> <b>On Behalf Of
</b>hameeza ahmed via llvm-dev<br>
<b>Sent:</b> Wednesday, November 13, 2019 4:02 AM<br>
<b>To:</b> llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><br>
<b>Subject:</b> [llvm-dev] Difference between clang -O1 -Xclang -disable-O0-optnone and clang -O0 -Xclang -disable-O0-optnone in LLVM 9<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">Hello,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">I m trying to test individual O3 optimizations/ replicating O3 behavior on IR. I took unoptimized IR (O0), used disable-o0-optnone via (<b>clang -O0  -Xclang -disable-O0-optnone</b>). I read somewhere about
<b>clang -O1  -Xclang -disable-O0-optnone,</b> so I also tested on this initial IR.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">I have observed by using individual optimizations, the performance (i.e time) is better when the base/initial IR is generated via 
<b>clang -O1  -Xclang -disable-O0-optnone</b>. In case of <b>clang -O0  -Xclang -disable-O0-optnone</b> initial IR, the performance is reduced.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">What is the possible reason for this?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">What is the right way?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Please guide.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Thank You <u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>

_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div></div>