[PATCH] D28073: Preserve domtree and loop-simplify for runtime unrolling.
Michael Kuperstein via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 27 13:18:26 PST 2016
mkuper added inline comments.
================
Comment at: lib/Transforms/Utils/LoopUnroll.cpp:55
+static cl::opt<bool>
+UnrollVerifyDomtree("unroll-verify-domtree", cl::init(false), cl::Hidden,
+ cl::desc("Verify domtree after unrolling"));
----------------
efriedma wrote:
> mkuper wrote:
> > We want to enforce this being on in new tests too, I assume?
> We probably want this on in new tests, yes, but I have no idea how we would enforce it.
In code review, I meant. :-)
================
Comment at: lib/Transforms/Utils/LoopUnroll.cpp:619
+ if (BB == LatchBlock) {
+ // The latch is special because we emit unconditional branches in
+ // some cases. Since the latch is always at the bottom of the loop,
----------------
efriedma wrote:
> mkuper wrote:
> > Isn't it the case that when the latch ends with an unconditional branch, that branch is towards the header block?
> > If so, we should not have any children outside the loop.
> Maybe this is more clear? "The latch is special because we can emit an unconditional branch in the unrolled loop even if the original latch block ends in a conditional branch."
Ah, ok, this makes sense.
This still looks a bit weird to me, though. Any chance you can give an example of when this ends up different than the nearest common dominator with Latches[0]?
(Feel free to ignore me - I'm not sure I understand this enough to LGTM it anyway. :-) )
Repository:
rL LLVM
https://reviews.llvm.org/D28073
More information about the llvm-commits
mailing list