<div dir="ltr"><div><div><div>Hello, <br><br></div>I am looking for a loop unfolding procedure implemented in LLVM that helps to transform a while-loop to n-layer If-statements. The transformation should be on IR,  although the example below is illustrated on the source level.  <br><br></div>original loop:<br><pre><i> WHILE (condition) DO
         action
 ENDWHILE</i><br><br></pre><pre>Expected unfolded loop (2-layer):<br><i><br> IF (condition) THEN<br></i></pre><pre><i>          action<br></i></pre><pre><i>          IF (condition) THEN<br></i></pre><pre><i>               action<br></i></pre><pre><i>               WHILE (condition) DO
                    action
               ENDWHILE
</i></pre><i>                      ENDIF<br></i></div><i>  ENDIF</i><br clear="all"><div><div><div><div><div><div><div><br><br></div><div>(I thought such transformation is somewhat standard but do not find it the related API of LLVM:loop:   <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_docs_doxygen_html_classllvm-5F1-5F1Loop.html&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=yM0Vi5USSIlDTpHDzlYOLQJuCxxBQnb1HDijbKLUPIA&s=kcfE20E9Tv_peJ2EC7XSVgW0btFfF-joP8HfqPyWes4&e=">http://llvm.org/docs/doxygen/html/classllvm_1_1Loop.html</a>)<br><br>Thanks for your help.<br><br></div><div>Sincerely,<br clear="all"></div><div><div><div class="gmail_signature">Zhoulai</div></div>
</div>
</div></div></div></div></div></div></div>