• Home
  • Raw
  • Download

Lines Matching refs:DT

86 static bool hoist(Instruction &I, const DominatorTree *DT, const Loop *CurLoop,
88 static bool sink(Instruction &I, const LoopInfo *LI, const DominatorTree *DT,
92 const DominatorTree *DT,
104 DominatorTree *DT, TargetLibraryInfo *TLI,
110 bool runOnLoop(Loop *L, AliasAnalysis *AA, LoopInfo *LI, DominatorTree *DT,
183 auto *DT = FAM.getCachedResult<DominatorTreeAnalysis>(*F); in run() local
186 assert((AA && LI && DT && TLI && SE) && "Analyses for LICM not available"); in run()
190 if (!LICM.runOnLoop(&L, AA, LI, DT, TLI, SE, true)) in run()
215 LoopInfo *LI, DominatorTree *DT, in runOnLoop() argument
220 assert(L->isLCSSAForm(*DT) && "Loop is not in LCSSA form."); in runOnLoop()
242 Changed |= sinkRegion(DT->getNode(L->getHeader()), AA, LI, DT, TLI, L, in runOnLoop()
245 Changed |= hoistRegion(DT->getNode(L->getHeader()), AA, LI, DT, TLI, L, in runOnLoop()
258 AS, ExitBlocks, InsertPts, PIC, LI, DT, TLI, L, CurAST, &SafetyInfo); in runOnLoop()
267 formLCSSARecursively(*L, *DT, LI, SE); in runOnLoop()
274 assert(L->isLCSSAForm(*DT) && "Loop not left in LCSSA form after LICM!"); in runOnLoop()
275 assert((!L->getParentLoop() || L->getParentLoop()->isLCSSAForm(*DT)) && in runOnLoop()
296 DominatorTree *DT, TargetLibraryInfo *TLI, Loop *CurLoop, in sinkRegion() argument
300 assert(N != nullptr && AA != nullptr && LI != nullptr && DT != nullptr && in sinkRegion()
313 Changed |= sinkRegion(Child, AA, LI, DT, TLI, CurLoop, CurAST, SafetyInfo); in sinkRegion()
340 canSinkOrHoistInst(I, AA, DT, TLI, CurLoop, CurAST, SafetyInfo)) { in sinkRegion()
342 Changed |= sink(I, LI, DT, CurLoop, CurAST, SafetyInfo); in sinkRegion()
354 DominatorTree *DT, TargetLibraryInfo *TLI, Loop *CurLoop, in hoistRegion() argument
357 assert(N != nullptr && AA != nullptr && LI != nullptr && DT != nullptr && in hoistRegion()
391 canSinkOrHoistInst(I, AA, DT, TLI, CurLoop, CurAST, SafetyInfo) && in hoistRegion()
393 I, DT, CurLoop, SafetyInfo, in hoistRegion()
395 Changed |= hoist(I, DT, CurLoop, SafetyInfo); in hoistRegion()
400 Changed |= hoistRegion(Child, AA, LI, DT, TLI, CurLoop, CurAST, SafetyInfo); in hoistRegion()
440 bool canSinkOrHoistInst(Instruction &I, AliasAnalysis *AA, DominatorTree *DT, in canSinkOrHoistInst() argument
519 return isSafeToExecuteUnconditionally(I, DT, CurLoop, SafetyInfo, nullptr); in canSinkOrHoistInst()
650 static bool sink(Instruction &I, const LoopInfo *LI, const DominatorTree *DT, in sink() argument
678 if (!DT->isReachableFromEntry(User->getParent())) { in sink()
690 if (!DT->isReachableFromEntry(BB)) { in sink()
719 static bool hoist(Instruction &I, const DominatorTree *DT, const Loop *CurLoop, in hoist() argument
733 !isGuaranteedToExecute(I, DT, CurLoop, SafetyInfo)) in hoist()
751 const DominatorTree *DT, in isSafeToExecuteUnconditionally() argument
755 if (isSafeToSpeculativelyExecute(&Inst, CtxI, DT)) in isSafeToExecuteUnconditionally()
758 return isGuaranteedToExecute(Inst, DT, CurLoop, SafetyInfo); in isSafeToExecuteUnconditionally()
845 LoopInfo *LI, DominatorTree *DT, const TargetLibraryInfo *TLI, in promoteLoopAccessesToScalars() argument
848 assert(LI != nullptr && DT != nullptr && CurLoop != nullptr && in promoteLoopAccessesToScalars()
953 *Load, DT, CurLoop, SafetyInfo, Preheader->getTerminator()); in promoteLoopAccessesToScalars()
974 if (isGuaranteedToExecute(*UI, DT, CurLoop, SafetyInfo)) { in promoteLoopAccessesToScalars()
980 isGuaranteedToExecute(*UI, DT, CurLoop, SafetyInfo); in promoteLoopAccessesToScalars()
986 Preheader->getTerminator(), DT); in promoteLoopAccessesToScalars()