Lines Matching full:latch
111 /// Returns estimate for max latch taken count of the loop of the narrowest
112 /// available type. If the latch block has such estimate, it is returned.
114 /// type than latch check itself), which is still better than no estimate.
133 BasicBlock *Latch = L.getLoopLatch(); in parseLoopStructure() local
134 assert(Latch && "Simplified loops only have one latch!"); in parseLoopStructure()
136 if (Latch->getTerminator()->getMetadata(ClonedLoopTag)) { in parseLoopStructure()
141 if (!L.isLoopExiting(Latch)) { in parseLoopStructure()
142 FailureReason = "no loop latch"; in parseLoopStructure()
153 BranchInst *LatchBr = dyn_cast<BranchInst>(Latch->getTerminator()); in parseLoopStructure()
155 FailureReason = "latch terminator not conditional branch"; in parseLoopStructure()
163 FailureReason = "latch terminator branch not conditional on integral icmp"; in parseLoopStructure()
169 FailureReason = "could not compute latch count"; in parseLoopStructure()
311 FailureReason = "unsigned latch conditions are explicitly prohibited"; in parseLoopStructure()
376 FailureReason = "unsigned latch conditions are explicitly prohibited"; in parseLoopStructure()
415 Result.Latch = Latch; in parseLoopStructure()
522 // We start with a loop with a single latch: in changeIterationSpaceEnd()
541 // | latch >----------/ in changeIterationSpaceEnd()
576 // | latch >------+ | | | in changeIterationSpaceEnd()
595 BasicBlock *BBInsertLocation = LS.Latch->getNextNode(); in changeIterationSpaceEnd()
656 NewPHI->addIncoming(PN.getIncomingValueForBlock(LS.Latch), in changeIterationSpaceEnd()
666 // The latch exit now has a branch from `RRI.ExitSelector' instead of in changeIterationSpaceEnd()
667 // `LS.Latch'. The PHI nodes need to be updated to reflect that. in changeIterationSpaceEnd()
668 LS.LatchExit->replacePhiUsesWith(LS.Latch, RRI.ExitSelector); in changeIterationSpaceEnd()
891 /// - Max latch taken count of the loop is limited. in run()