[PATCH] D28073: Preserve domtree and loop-simplify for runtime unrolling.

Michael Zolotukhin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 6 15:19:24 PST 2017


mzolotukhin added inline comments.


================
Comment at: lib/Transforms/Utils/LoopUnroll.cpp:700-701
   if (DT) {
-    if (!OuterL && !CompletelyUnroll)
-      OuterL = L;
     if (OuterL) {
----------------
efriedma wrote:
> mzolotukhin wrote:
> > efriedma wrote:
> > > mzolotukhin wrote:
> > > > Why can we remove this?
> > > There are three possibilities for unrolling: we could be completely unrolling a loop, we could be runtime unrolling a loop, or we could be peeling a loop.  If we're completely unrolling, these lines are a no-op.  If we're runtime unrolling, we now correctly preserve LoopSimplify for L (and we don't break it for any loop outside of L).  If we're peeling, we explicitly recreate LoopSimplify earlier.  
> > But isn't it also used for LCSSA? Maybe I'm missing something, but it's still not obvious to me that we can remove it.
> !CompletelyUnroll implies !NeedToFixLCSSA.
Ah, right!


Repository:
  rL LLVM

https://reviews.llvm.org/D28073





More information about the llvm-commits mailing list