<div dir="ltr">If you run clang with no optimization level specified, it outputs IR that is marked "optnone" and when you run opt it will skip optimizing. You can prevent this by passing "-Xclang -disable-O0-optnone".<div><br></div><div>Or alternatively, you can pass -O1 and pass "-Xclang -disable-llvm-passes" which will stop immediately after the frontend generates the IR and it won't run any of the optimization steps.<br><div><br></div><div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">~Craig</div></div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Jun 26, 2018 at 3:45 PM luck.caile 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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div><span></span></div><div><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">test.cpp:<u></u><u></u></span></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">int main() {<u></u><u></u></span></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">int ret = 0;<u></u><u></u></span></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">for (int i = 0; i < 100; i++) {<u></u><u></u></span></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">    ret += i;<u></u><u></u></span></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">}<u></u><u></u></span></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">return ret;<u></u><u></u></span></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">}<u></u><u></u></span></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><u></u> <u></u></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">Hi,<u></u><u></u></span></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">I’m new to clang/llvm recently and interested in doing some stuff in optimization passes.<u></u><u></u></span></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">I tried to play above simple test with clang and see if I could get expected llvm IR by enabling llvm loop unrolling of a count 2.<u></u><u></u></span></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">Here are my attempts:<u></u><u></u></span></p><ol start="1" type="a" style="margin-bottom:0in;margin-top:0in"><li class="MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">adding pragma before loop in test.cpp: #pragma clang loop unroll_count(2)<u></u><u></u></span></li></ol><p class="m_6154604737153391194MsoListParagraph" style="margin:0in 0in 0.0001pt 0.5in"><span style="background-color:rgba(255,255,255,0)">It did not unroll the loop.<u></u><u></u></span></p><ol start="2" type="a" style="margin-bottom:0in;margin-top:0in"><li class="MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">clang++ -c -emit-llvm -S -std=c++11 test.cpp<u></u><u></u></span></li></ol><p class="m_6154604737153391194MsoListParagraph" style="margin:0in 0in 0.0001pt 0.5in"><span style="background-color:rgba(255,255,255,0)">opt test.ll -mem2reg -loop-unroll -unroll-count=2 -unroll-allow-partial -S<u></u><u></u></span></p><p class="m_6154604737153391194MsoListParagraph" style="margin:0in 0in 0.0001pt 0.5in"><span style="background-color:rgba(255,255,255,0)">It did not unroll the loop.<u></u><u></u></span></p><p class="m_6154604737153391194MsoListParagraph" style="margin:0in 0in 0.0001pt 0.5in"><span style="background-color:rgba(255,255,255,0)">In addition, by enabling -debug, I saw message “Skipping ‘Unroll Loops’ pass…..”<u></u><u></u></span></p><ol start="3" type="a" style="margin-bottom:0in;margin-top:0in"><li class="MsoNormal" style="text-align:start;margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">clang++ -c -emit-llvm -S -std=c++11 -O1 test.cpp<u></u><u></u></span></li></ol><p class="m_6154604737153391194MsoListParagraph" style="margin:0in 0in 0.0001pt 0.5in"><span style="background-color:rgba(255,255,255,0)">It unrolled the loop completely and directly return the final result(4950).<u></u><u></u></span></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><u></u> <u></u></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">I assume that my llvm and clang are latest and installed correctly.<u></u><u></u></span></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">Could someone please let me know what I am missing here?<u></u><u></u></span></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><u></u> <u></u></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">Thanks,<u></u><u></u></span></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt"><span style="background-color:rgba(255,255,255,0)">Kai</span></p><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="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>