Home | History | Annotate | Download | only in Scalar

Lines Matching refs:CurLoop

74 static bool inSubLoop(BasicBlock *BB, Loop *CurLoop, LoopInfo *LI);
75 static bool isNotUsedInLoop(Instruction &I, Loop *CurLoop);
78 Loop *CurLoop, AliasSetTracker *CurAST );
80 Loop *CurLoop, LICMSafetyInfo *SafetyInfo);
82 Loop *CurLoop,
91 DominatorTree *DT, Loop *CurLoop,
138 Loop *CurLoop; // The current loop we are working on...
204 CurLoop = L;
222 computeLICMSafetyInfo(&SafetyInfo, CurLoop);
235 Changed |= sinkRegion(DT->getNode(L->getHeader()), AA, LI, DT, TLI, CurLoop,
239 CurLoop, CurAST, &SafetyInfo);
252 PIC, LI, DT, CurLoop,
274 CurLoop = nullptr;
292 DominatorTree *DT, TargetLibraryInfo *TLI, Loop *CurLoop,
297 DT != nullptr && CurLoop != nullptr && CurAST != nullptr &&
305 if (!CurLoop->contains(BB)) return Changed;
311 sinkRegion(Children[i], AA, LI, DT, TLI, CurLoop, CurAST, SafetyInfo);
314 if (inSubLoop(BB,CurLoop,LI)) return Changed;
335 if (isNotUsedInLoop(I, CurLoop) &&
336 canSinkOrHoistInst(I, AA, DT, CurLoop, CurAST, SafetyInfo)) {
338 Changed |= sink(I, LI, DT, CurLoop, CurAST);
350 DominatorTree *DT, TargetLibraryInfo *TLI, Loop *CurLoop,
354 DT != nullptr && CurLoop != nullptr && CurAST != nullptr &&
361 if (!CurLoop->contains(BB)) return Changed;
364 if (!inSubLoop(BB, CurLoop, LI))
384 if (CurLoop->hasLoopInvariantOperands(&I) &&
385 canSinkOrHoistInst(I, AA, DT, CurLoop, CurAST, SafetyInfo) &&
386 isSafeToExecuteUnconditionally(I, DT, CurLoop, SafetyInfo))
387 Changed |= hoist(I, CurLoop->getLoopPreheader());
393 hoistRegion(Children[i], AA, LI, DT, TLI, CurLoop, CurAST, SafetyInfo);
400 void llvm::computeLICMSafetyInfo(LICMSafetyInfo * SafetyInfo, Loop * CurLoop) {
401 assert(CurLoop != nullptr && "CurLoop cant be null");
402 BasicBlock *Header = CurLoop->getHeader();
413 for (Loop::block_iterator BB = CurLoop->block_begin(),
414 BBE = CurLoop->block_end(); (BB != BBE) && !SafetyInfo->MayThrow ; ++BB)
424 Loop *CurLoop, AliasSetTracker *CurAST,
485 return isSafeToExecuteUnconditionally(I, DT, CurLoop, SafetyInfo);
505 static bool isNotUsedInLoop(Instruction &I, Loop *CurLoop) {
514 if (CurLoop->contains(PN))
524 if (CurLoop->contains(PN->getIncomingBlock(i)))
530 if (CurLoop->contains(UI))
571 Loop *CurLoop, AliasSetTracker *CurAST ) {
581 CurLoop->getUniqueExitBlocks(ExitBlocks);
641 Loop *CurLoop,
647 return isGuaranteedToExecute(Inst, DT, CurLoop, SafetyInfo);
651 Loop *CurLoop, LICMSafetyInfo * SafetyInfo) {
660 if (Inst.getParent() == CurLoop->getHeader())
672 CurLoop->getExitBlocks(ExitBlocks);
774 DominatorTree *DT, Loop *CurLoop,
779 CurLoop != nullptr && CurAST != nullptr &&
788 AS.isVolatile() || !CurLoop->isLoopInvariant(AS.begin()->getValue()))
795 BasicBlock * Preheader = CurLoop->getLoopPreheader();
819 bool HasDedicatedExits = CurLoop->hasDedicatedExits();
837 if (!UI || !CurLoop->contains(UI))
872 if (isGuaranteedToExecute(*UI, DT, CurLoop, SafetyInfo)) {
879 CurLoop, SafetyInfo);
914 CurLoop->getUniqueExitBlocks(ExitBlocks);
985 // Check to see if any of the basic blocks in CurLoop invalidate *V.
992 static bool inSubLoop(BasicBlock *BB, Loop *CurLoop, LoopInfo *LI) {
993 assert(CurLoop->contains(BB) && "Only valid if BB is IN the loop");
994 return LI->getLoopFor(BB) != CurLoop;