diff --git a/bolt/lib/Passes/LoopInversionPass.cpp b/bolt/lib/Passes/LoopInversionPass.cpp --- a/bolt/lib/Passes/LoopInversionPass.cpp +++ b/bolt/lib/Passes/LoopInversionPass.cpp @@ -54,11 +54,17 @@ } } - assert(SecondSucc != nullptr && "Unable to find second BB successor"); - const uint64_t BBCount = SuccBB->getBranchInfo(*BB).Count; - const uint64_t OtherCount = SuccBB->getBranchInfo(*SecondSucc).Count; - if ((BBCount < OtherCount) && (BBIndex > SuccBBIndex)) - continue; + assert(SecondSucc != nullptr && "Unable to find a second BB successor"); + const uint64_t LoopCount = SuccBB->getBranchInfo(*BB).Count; + const uint64_t ExitCount = SuccBB->getBranchInfo(*SecondSucc).Count; + + if (LoopCount < ExitCount) { + if (BBIndex > SuccBBIndex) + continue; + } else { + if (BBIndex < SuccBBIndex) + continue; + } IsChanged = true; BB->setLayoutIndex(SuccBBIndex);