<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p><font face="Hack Nerd Font Mono">Hi Iulian,</font></p>
    <p><font face="Hack Nerd Font Mono"><br>
      </font></p>
    <p><font face="Hack Nerd Font Mono">On first thought I would think
        that extracting top-level loops is only minimally easier than
        extracting any other loop level,</font></p>
    <p><font face="Hack Nerd Font Mono">if you consider arbitrary input,
        e.g,. potential irreducible "outer-outer-most" loops. For inner
        ones you might want to split</font></p>
    <p><font face="Hack Nerd Font Mono"> some blocks and edges to make
        sure they are not shared with the outer loop but other than
        that, I imagine it to be pretty similar.</font></p>
    <p><font face="Hack Nerd Font Mono"> (This assumes you do not want
        to preserve things like LoopInfo, ScalarEvolution, ...). <br>
      </font></p>
    <p><font face="Hack Nerd Font Mono">Extracting a single basic block
        is probably easier still. Again, assuming you do not want to
        update analyses.</font></p>
    <p><font face="Hack Nerd Font Mono"><br>
      </font></p>
    <p><font face="Hack Nerd Font Mono">If you want more details or
        think I haven't grasped the essence of your questions, feel free
        to say so :)<br>
      </font></p>
    <p><font face="Hack Nerd Font Mono"><br>
      </font></p>
    <p><font face="Hack Nerd Font Mono">~ Johannes</font></p>
    <p><font face="Hack Nerd Font Mono"><br>
      </font></p>
    <p><font face="Hack Nerd Font Mono"><br>
      </font></p>
    <div class="moz-cite-prefix">On 7/1/20 4:23 PM, iulian brumar via
      llvm-dev wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:382599647.812052.1593638595632@mail.yahoo.com">
      <pre class="moz-quote-pre" wrap="">Hello everyone,

Quick question about loop extraction in llvm. I've been using the LoopExtractor pass in llvm/lib/Transforms/IPO/LoopExtractor.cpp to extract top level loops from programs.

I'm wondering if extracting inner-most loops is any more complex than using the BlockExtractor pass in llvm/lib/Transforms/IPO/BlockExtractor.cpp and making sure that the basic blocks in the extracted region are single entry-single exit. Would there be any fundamental differences wrt what LoopExtractor is doing for top-level loops?

Thanks,
Iulian
_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
    </blockquote>
  </body>
</html>