H A D | SimpleLoopUnswitch.cpp | 1 ///===- SimpleLoopUnswitch.cpp - Hoist loop-invariant control flow ------- 193 collectHomogenousInstGraphLoopInvariants(const Loop & L,Instruction & Root,const LoopInfo & LI) collectHomogenousInstGraphLoopInvariants() argument 235 replaceLoopInvariantUses(const Loop & L,Value * Invariant,Constant & Replacement) replaceLoopInvariantUses() argument 252 areLoopExitPHIsLoopInvariant(const Loop & L,const BasicBlock & ExitingBB,const BasicBlock & ExitBB) areLoopExitPHIsLoopInvariant() argument 294 buildPartialInvariantUnswitchConditionalBranch(BasicBlock & BB,ArrayRef<Value * > ToDuplicate,bool Direction,BasicBlock & UnswitchedSucc,BasicBlock & NormalSucc,Loop & L,MemorySSAUpdater * MSSAU) buildPartialInvariantUnswitchConditionalBranch() argument 409 hoistLoopToNewParent(Loop & L,BasicBlock & Preheader,DominatorTree & DT,LoopInfo & LI,MemorySSAUpdater * MSSAU,ScalarEvolution * SE) hoistLoopToNewParent() argument 509 unswitchTrivialBranch(Loop & L,BranchInst & BI,DominatorTree & DT,LoopInfo & LI,ScalarEvolution * SE,MemorySSAUpdater * MSSAU) unswitchTrivialBranch() argument 743 unswitchTrivialSwitch(Loop & L,SwitchInst & SI,DominatorTree & DT,LoopInfo & LI,ScalarEvolution * SE,MemorySSAUpdater * MSSAU) unswitchTrivialSwitch() argument 1048 unswitchAllTrivialConditions(Loop & L,DominatorTree & DT,LoopInfo & LI,ScalarEvolution * SE,MemorySSAUpdater * MSSAU) unswitchAllTrivialConditions() argument 1168 buildClonedLoopBlocks(Loop & L,BasicBlock * LoopPH,BasicBlock * SplitBB,ArrayRef<BasicBlock * > ExitBlocks,BasicBlock * ParentBB,BasicBlock * UnswitchedSuccBB,BasicBlock * ContinueSuccBB,const SmallDenseMap<BasicBlock *,BasicBlock *,16> & DominatingSucc,ValueToValueMapTy & VMap,SmallVectorImpl<DominatorTree::UpdateType> & DTUpdates,AssumptionCache & AC,DominatorTree & DT,LoopInfo & LI,MemorySSAUpdater * MSSAU,ScalarEvolution * SE) buildClonedLoopBlocks() argument 1397 Loop *ClonedParentL, *L; cloneLoopNest() local 1672 deleteDeadClonedBlocks(Loop & L,ArrayRef<BasicBlock * > ExitBlocks,ArrayRef<std::unique_ptr<ValueToValueMapTy>> VMaps,DominatorTree & DT,MemorySSAUpdater * MSSAU) deleteDeadClonedBlocks() argument 1701 deleteDeadBlocksFromLoop(Loop & L,SmallVectorImpl<BasicBlock * > & ExitBlocks,DominatorTree & DT,LoopInfo & LI,MemorySSAUpdater * MSSAU,ScalarEvolution * SE,LPMUpdater & LoopUpdater) deleteDeadBlocksFromLoop() argument 1795 recomputeLoopBlockSet(Loop & L,LoopInfo & LI) recomputeLoopBlockSet() argument 1906 rebuildLoopAfterUnswitch(Loop & L,ArrayRef<BasicBlock * > ExitBlocks,LoopInfo & LI,SmallVectorImpl<Loop * > & HoistedLoops,ScalarEvolution * SE) rebuildLoopAfterUnswitch() argument 1984 __anondb665f8c1102(Loop &L, SmallPtrSetImpl<BasicBlock *> &UnloopedBlocks) rebuildLoopAfterUnswitch() argument 2138 postUnswitch(Loop & L,LPMUpdater & U,StringRef LoopName,bool CurrentLoopValid,bool PartiallyInvariant,bool InjectedCondition,ArrayRef<Loop * > NewLoops) postUnswitch() argument 2176 unswitchNontrivialInvariants(Loop & L,Instruction & TI,ArrayRef<Value * > Invariants,IVConditionInfo & PartialIVInfo,DominatorTree & DT,LoopInfo & LI,AssumptionCache & AC,ScalarEvolution * SE,MemorySSAUpdater * MSSAU,LPMUpdater & LoopUpdater,bool InsertFreeze,bool InjectedCondition) unswitchNontrivialInvariants() argument 2762 turnGuardIntoBranch(IntrinsicInst * GI,Loop & L,DominatorTree & DT,LoopInfo & LI,MemorySSAUpdater * MSSAU) turnGuardIntoBranch() argument 2819 CalculateUnswitchCostMultiplier(const Instruction & TI,const Loop & L,const LoopInfo & LI,const DominatorTree & DT,ArrayRef<NonTrivialUnswitchCandidate> UnswitchCandidates) CalculateUnswitchCostMultiplier() argument 2900 collectUnswitchCandidates(SmallVectorImpl<NonTrivialUnswitchCandidate> & UnswitchCandidates,IVConditionInfo & PartialIVInfo,Instruction * & PartialIVCondBranch,const Loop & L,const LoopInfo & LI,AAResults & AA,const MemorySSAUpdater * MSSAU) collectUnswitchCandidates() argument 2995 canonicalizeForInvariantConditionInjection(ICmpInst::Predicate & Pred,Value * & LHS,Value * & RHS,BasicBlock * & IfTrue,BasicBlock * & IfFalse,const Loop & L) canonicalizeForInvariantConditionInjection() argument 3021 shouldTryInjectInvariantCondition(const ICmpInst::Predicate Pred,const Value * LHS,const Value * RHS,const BasicBlock * IfTrue,const BasicBlock * IfFalse,const Loop & L) shouldTryInjectInvariantCondition() argument 3081 injectPendingInvariantConditions(NonTrivialUnswitchCandidate Candidate,Loop & L,DominatorTree & DT,LoopInfo & LI,AssumptionCache & AC,MemorySSAUpdater * MSSAU) injectPendingInvariantConditions() argument 3180 insertCandidatesWithPendingInjections(SmallVectorImpl<NonTrivialUnswitchCandidate> & UnswitchCandidates,Loop & L,ICmpInst::Predicate Pred,ArrayRef<CompareDesc> Compares,const DominatorTree & DT) insertCandidatesWithPendingInjections() argument 3219 collectUnswitchCandidatesWithInjections(SmallVectorImpl<NonTrivialUnswitchCandidate> & UnswitchCandidates,IVConditionInfo & PartialIVInfo,Instruction * & PartialIVCondBranch,Loop & L,const DominatorTree & DT,const LoopInfo & LI,AAResults & AA,const MemorySSAUpdater * MSSAU) collectUnswitchCandidatesWithInjections() argument 3272 isSafeForNoNTrivialUnswitching(Loop & L,LoopInfo & LI) isSafeForNoNTrivialUnswitching() argument 3316 findBestNonTrivialUnswitchCandidate(ArrayRef<NonTrivialUnswitchCandidate> UnswitchCandidates,const Loop & L,const DominatorTree & DT,const LoopInfo & LI,AssumptionCache & AC,const TargetTransformInfo & TTI,const IVConditionInfo & PartialIVInfo) findBestNonTrivialUnswitchCandidate() argument 3472 shouldInsertFreeze(Loop & L,Instruction & TI,DominatorTree & DT,AssumptionCache & AC) shouldInsertFreeze() argument 3492 unswitchBestCondition(Loop & L,DominatorTree & DT,LoopInfo & LI,AssumptionCache & AC,AAResults & AA,TargetTransformInfo & TTI,ScalarEvolution * SE,MemorySSAUpdater * MSSAU,LPMUpdater & LoopUpdater) unswitchBestCondition() argument 3585 unswitchLoop(Loop & L,DominatorTree & DT,LoopInfo & LI,AssumptionCache & AC,AAResults & AA,TargetTransformInfo & TTI,bool Trivial,bool NonTrivial,ScalarEvolution * SE,MemorySSAUpdater * MSSAU,ProfileSummaryInfo * PSI,BlockFrequencyInfo * BFI,LPMUpdater & LoopUpdater) unswitchLoop() argument 3589 unswitchLoop(Loop & L,DominatorTree & DT,LoopInfo & LI,AssumptionCache & AC,AAResults & AA,TargetTransformInfo & TTI,bool Trivial,bool NonTrivial,ScalarEvolution * SE,MemorySSAUpdater * MSSAU,ProfileSummaryInfo * PSI,BlockFrequencyInfo * BFI,LPMUpdater & LoopUpdater) unswitchLoop() argument 3632 __anondb665f8c1e02(const Loop *L) unswitchLoop() argument 3680 run(Loop & L,LoopAnalysisManager & AM,LoopStandardAnalysisResults & AR,LPMUpdater & U) run() argument 3685 ProfileSummaryInfo *PSI = nullptr; run() local [all...] |