Index: llvm/lib/CodeGen/MachinePipeliner.cpp =================================================================== --- llvm/lib/CodeGen/MachinePipeliner.cpp +++ llvm/lib/CodeGen/MachinePipeliner.cpp @@ -2439,7 +2439,8 @@ int EarlyStart = cycle + Dep.getLatency() - DAG->getDistance(Dep.getSUnit(), SU, Dep) * II; *MaxEarlyStart = std::max(*MaxEarlyStart, EarlyStart); - if (DAG->isLoopCarriedDep(SU, Dep, false)) { + if (DAG->isLoopCarriedDep(SU, Dep, false) || + DAG->isLoopCarriedDep(SU, Dep)) { int End = earliestCycleInChain(Dep) + (II - 1); *MinEnd = std::min(*MinEnd, End); } @@ -2463,7 +2464,8 @@ int LateStart = cycle - Dep.getLatency() + DAG->getDistance(SU, Dep.getSUnit(), Dep) * II; *MinLateStart = std::min(*MinLateStart, LateStart); - if (DAG->isLoopCarriedDep(SU, Dep)) { + if (DAG->isLoopCarriedDep(SU, Dep) || + DAG->isLoopCarriedDep(SU, Dep, false)) { int Start = latestCycleInChain(Dep) + 1 - II; *MaxStart = std::max(*MaxStart, Start); }