Index: llvm/lib/Target/ARM/ARMLowOverheadLoops.cpp =================================================================== --- llvm/lib/Target/ARM/ARMLowOverheadLoops.cpp +++ llvm/lib/Target/ARM/ARMLowOverheadLoops.cpp @@ -1082,8 +1082,8 @@ // Get the latest possible insertion point and check whether the semantics // will be maintained if Start was inserted there. if (FirstNonTerminator == MBB->end()) { - if (RDA.isReachingDefLiveOut(Start, CountReg) && - RDA.isReachingDefLiveOut(Start, ARM::LR)) + if (RDA.isReachingDefLiveOut(&*InsertPt, CountReg) && + RDA.isReachingDefLiveOut(&*InsertPt, ARM::LR)) InsertPt = FirstNonTerminator; } else if (RDA.hasSameReachingDef(Start, &*FirstNonTerminator, CountReg) && RDA.hasSameReachingDef(Start, &*FirstNonTerminator, ARM::LR))