diff --git a/llvm/lib/Transforms/Utils/LoopSimplify.cpp b/llvm/lib/Transforms/Utils/LoopSimplify.cpp --- a/llvm/lib/Transforms/Utils/LoopSimplify.cpp +++ b/llvm/lib/Transforms/Utils/LoopSimplify.cpp @@ -535,6 +535,11 @@ Changed = true; } + BasicBlock *TrueBB, *FalseBB; + using namespace PatternMatch; + if (match(BI, m_Br(m_Value(), TrueBB, FalseBB)) && + !L->contains(TrueBB) && L->contains(FalseBB)) + BI->swapSuccessors(); } // Does the loop already have a preheader? If so, don't insert one.