/external/llvm/unittests/IR/ |
D | DominatorTreeTest.cpp | 30 DominatorTree *DT = in runOnFunction() local 60 EXPECT_TRUE(DT->isReachableFromEntry(BB0)); in runOnFunction() 61 EXPECT_TRUE(DT->isReachableFromEntry(BB1)); in runOnFunction() 62 EXPECT_TRUE(DT->isReachableFromEntry(BB2)); in runOnFunction() 63 EXPECT_FALSE(DT->isReachableFromEntry(BB3)); in runOnFunction() 64 EXPECT_TRUE(DT->isReachableFromEntry(BB4)); in runOnFunction() 67 EXPECT_TRUE(DT->dominates(BB0, BB0)); in runOnFunction() 68 EXPECT_TRUE(DT->dominates(BB0, BB1)); in runOnFunction() 69 EXPECT_TRUE(DT->dominates(BB0, BB2)); in runOnFunction() 70 EXPECT_TRUE(DT->dominates(BB0, BB3)); in runOnFunction() [all …]
|
/external/llvm/include/llvm/Support/ |
D | GenericDomTreeConstruction.h | 33 unsigned DFSPass(DominatorTreeBase<typename GraphT::NodeType>& DT, in DFSPass() argument 39 InfoRec &VInfo = DT.Info[DT.Roots[i]]; in DFSPass() 46 InfoRec &SuccVInfo = DT.Info[*SI]; in DFSPass() 49 N = DTDFSPass(DT, *SI, N); in DFSPass() 63 DT.Info[BB]; in DFSPass() 70 DT.Vertex.push_back(BB); // Vertex[n] = V; in DFSPass() 95 DT.Info[Succ]; in DFSPass() 107 Eval(DominatorTreeBase<typename GraphT::NodeType> &DT, in Eval() argument 110 DT.Info[VIn]; in Eval() 123 DT.Info[V]; in Eval() [all …]
|
/external/clang/include/clang/Analysis/Analyses/ |
D | Dominators.h | 41 llvm::DominatorTreeBase<CFGBlock>* DT; 44 DT = new llvm::DominatorTreeBase<CFGBlock>(false); in DominatorTree() 47 ~DominatorTree() override { delete DT; } in ~DominatorTree() local 49 llvm::DominatorTreeBase<CFGBlock>& getBase() { return *DT; } in getBase() 54 return DT->getRoot(); in getRoot() 60 return DT->getRootNode(); in getRootNode() 74 if (DT->compare(Other.getBase())) in compare() 85 DT->recalculate(*cfg); in buildDominatorTree() 95 if(DT->getNode(*I)->getIDom()) in dump() 98 << DT->getNode(*I)->getIDom()->getBlock()->getBlockID() in dump() [all …]
|
/external/llvm/include/llvm/Analysis/ |
D | PostDominators.h | 26 DominatorTreeBase<BasicBlock>* DT; member 30 DT = new DominatorTreeBase<BasicBlock>(true); in PostDominatorTree() 42 return DT->getRoots(); in getRoots() 46 return DT->getRootNode(); in getRootNode() 50 return DT->getNode(BB); 54 return DT->getNode(BB); in getNode() 58 return DT->dominates(A, B); in dominates() 62 return DT->dominates(A, B); in dominates() 66 return DT->properlyDominates(A, B); in properlyDominates() 70 return DT->properlyDominates(A, B); in properlyDominates() [all …]
|
D | InstructionSimplify.h | 54 const DominatorTree *DT = nullptr, 63 const DominatorTree *DT = nullptr, 72 const DominatorTree *DT = nullptr, 81 const DominatorTree *DT = nullptr, 90 const DominatorTree *DT = nullptr, 98 const DominatorTree *DT = nullptr, 106 const DominatorTree *DT = nullptr, 114 const DominatorTree *DT = nullptr, 123 const DominatorTree *DT = nullptr, 131 const DominatorTree *DT = nullptr, [all …]
|
D | ValueTracking.h | 49 const DominatorTree *DT = nullptr); 59 const DominatorTree *DT = nullptr); 67 const DominatorTree *DT = nullptr); 78 const DominatorTree *DT = nullptr); 87 const DominatorTree *DT = nullptr); 93 const DominatorTree *DT = nullptr); 100 const DominatorTree *DT = nullptr); 114 const DominatorTree *DT = nullptr); 127 const DominatorTree *DT = nullptr); 245 const DominatorTree *DT = nullptr, [all …]
|
D | BasicAliasAnalysis.h | 44 DominatorTree *DT; variable 49 AssumptionCache &AC, DominatorTree *DT = nullptr, 51 : AAResultBase(TLI), DL(DL), AC(AC), DT(DT), LI(LI) {} in AAResultBase() 54 : AAResultBase(Arg), DL(Arg.DL), AC(Arg.AC), DT(Arg.DT), LI(Arg.LI) {} in BasicAAResult() 56 : AAResultBase(std::move(Arg)), DL(Arg.DL), AC(Arg.AC), DT(Arg.DT), in BasicAAResult() 138 DominatorTree *DT, bool &NSW, bool &NUW); 144 AssumptionCache *AC, DominatorTree *DT); 156 AssumptionCache *AC, DominatorTree *DT);
|
/external/llvm/include/llvm/CodeGen/ |
D | MachineDominators.h | 71 DominatorTreeBase<MachineBasicBlock>* DT; variable 79 return *DT; in getBase() 90 return DT->getRoots(); in getRoots() 95 return DT->getRoot(); in getRoot() 100 return DT->getRootNode(); in getRootNode() 108 return DT->dominates(A, B); in dominates() 114 return DT->dominates(A, B); in dominates() 122 if (BBA != BBB) return DT->dominates(BBA, BBB); in dominates() 141 return DT->properlyDominates(A, B); in properlyDominates() 147 return DT->properlyDominates(A, B); in properlyDominates() [all …]
|
D | MachinePostDominators.h | 29 DominatorTreeBase<MachineBasicBlock> *DT; 41 return DT->getRoots(); in getRoots() 45 return DT->getRootNode(); in getRootNode() 49 return DT->getNode(BB); 53 return DT->getNode(BB); in getNode() 58 return DT->dominates(A, B); in dominates() 62 return DT->dominates(A, B); in dominates() 67 return DT->properlyDominates(A, B); in properlyDominates() 72 return DT->properlyDominates(A, B); in properlyDominates() 77 return DT->findNearestCommonDominator(A, B); in findNearestCommonDominator()
|
/external/llvm/lib/CodeGen/ |
D | MachineDominators.cpp | 41 DT->recalculate(F); in runOnMachineFunction() 49 DT = new DominatorTreeBase<MachineBasicBlock>(false); in MachineDominatorTree() 53 delete DT; in ~MachineDominatorTree() 57 DT->releaseMemory(); in releaseMemory() 61 DT->print(OS); in print() 81 MachineDomTreeNode *SuccDTNode = DT->getNode(Succ); in applySplitCriticalEdges() 104 if (!DT->dominates(SuccDTNode, DT->getNode(PredBB))) { in applySplitCriticalEdges() 116 MachineDomTreeNode *NewDTNode = DT->addNewBlock(Edge.NewBB, Edge.FromBB); in applySplitCriticalEdges() 122 DT->changeImmediateDominator(DT->getNode(Edge.ToBB), NewDTNode); in applySplitCriticalEdges()
|
D | MachineRegionInfo.cpp | 26 MachineDominatorTree *DT, MachineRegion *Parent) : in MachineRegion() argument 27 RegionBase<RegionTraits<MachineFunction>>(Entry, Exit, RI, DT, Parent) { in MachineRegion() 58 DT = DT_; in recalculate() 64 TopLevelRegion = new MachineRegion(Entry, nullptr, this, DT, nullptr); in recalculate() 84 auto DT = &getAnalysis<MachineDominatorTree>(); in runOnMachineFunction() local 88 RI.recalculate(F, DT, PDT, DF); in runOnMachineFunction()
|
/external/llvm/lib/Transforms/Utils/ |
D | LCSSA.cpp | 64 static bool processInstruction(Loop &L, Instruction &Inst, DominatorTree &DT, in processInstruction() argument 102 DomTreeNode *DomNode = DT.getNode(DomBB); in processInstruction() 113 if (!DT.dominates(DomNode, DT.getNode(ExitBB))) in processInstruction() 194 processInstruction(*OtherLoop, *I, DT, EBs, PredCache, LI); in processInstruction() 209 DominatorTree &DT, in blockDominatesAnExit() argument 211 DomTreeNode *DomNode = DT.getNode(BB); in blockDominatesAnExit() 213 if (DT.dominates(DomNode, DT.getNode(ExitBB))) in blockDominatesAnExit() 219 bool llvm::formLCSSA(Loop &L, DominatorTree &DT, LoopInfo *LI, in formLCSSA() argument 238 if (!blockDominatesAnExit(BB, DT, ExitBlocks)) in formLCSSA() 249 Changed |= processInstruction(L, I, DT, ExitBlocks, PredCache, LI); in formLCSSA() [all …]
|
D | BreakCriticalEdges.cpp | 46 auto *DT = DTWP ? &DTWP->getDomTree() : nullptr; in runOnFunction() local 50 SplitAllCriticalEdges(F, CriticalEdgeSplittingOptions(DT, LI)); in runOnFunction() 199 auto *DT = Options.DT; in SplitCriticalEdge() local 201 if (!DT && !LI) in SplitCriticalEdge() 229 if (DT) { in SplitCriticalEdge() 230 DomTreeNode *TINode = DT->getNode(TIBB); in SplitCriticalEdge() 236 DomTreeNode *NewBBNode = DT->addNewBlock(NewBB, TIBB); in SplitCriticalEdge() 241 DestBBNode = DT->getNode(DestBB); in SplitCriticalEdge() 243 if (DomTreeNode *OPNode = DT->getNode(OtherPreds.back())) in SplitCriticalEdge() 244 NewBBDominatesDestBB = DT->dominates(DestBBNode, OPNode); in SplitCriticalEdge() [all …]
|
D | BasicBlockUtils.cpp | 108 bool llvm::MergeBlockIntoPredecessor(BasicBlock *BB, DominatorTree *DT, in MergeBlockIntoPredecessor() argument 164 if (DT) in MergeBlockIntoPredecessor() 165 if (DomTreeNode *DTN = DT->getNode(BB)) { in MergeBlockIntoPredecessor() 166 DomTreeNode *PredDTN = DT->getNode(PredBB); in MergeBlockIntoPredecessor() 171 DT->changeImmediateDominator(*DI, PredDTN); in MergeBlockIntoPredecessor() 173 DT->eraseNode(BB); in MergeBlockIntoPredecessor() 238 BasicBlock *llvm::SplitEdge(BasicBlock *BB, BasicBlock *Succ, DominatorTree *DT, in SplitEdge() argument 244 if (SplitCriticalEdge(LatchTerm, SuccNum, CriticalEdgeSplittingOptions(DT, LI) in SplitEdge() 255 return SplitBlock(Succ, &Succ->front(), DT, LI); in SplitEdge() 262 return SplitBlock(BB, BB->getTerminator(), DT, LI); in SplitEdge() [all …]
|
D | LoopSimplify.cpp | 117 BasicBlock *llvm::InsertPreheaderForLoop(Loop *L, DominatorTree *DT, in InsertPreheaderForLoop() argument 139 PreheaderBB = SplitBlockPredecessors(Header, OutsideBlocks, ".preheader", DT, in InsertPreheaderForLoop() 159 DominatorTree *DT, LoopInfo *LI, in rewriteLoopExitBlock() argument 175 NewExitBB = SplitBlockPredecessors(Exit, LoopBlocks, ".loopexit", DT, LI, in rewriteLoopExitBlock() 206 static PHINode *findPHIToPartitionLoops(Loop *L, DominatorTree *DT, in findPHIToPartitionLoops() argument 212 if (Value *V = SimplifyInstruction(PN, DL, nullptr, DT, AC)) { in findPHIToPartitionLoops() 249 DominatorTree *DT, LoopInfo *LI, in separateNestedLoop() argument 260 PHINode *PN = findPHIToPartitionLoops(L, DT, AC); in separateNestedLoop() 285 DT, LI, PreserveLCSSA); in separateNestedLoop() 316 if (DT->dominates(Header, P)) in separateNestedLoop() [all …]
|
/external/llvm/lib/Analysis/ |
D | PHITransAddr.cpp | 147 const DominatorTree *DT) { in PHITranslateSubExpr() argument 192 Value *PHIIn = PHITranslateSubExpr(Cast->getOperand(0), CurBB, PredBB, DT); in PHITranslateSubExpr() 210 (!DT || DT->dominates(CastI->getParent(), PredBB))) in PHITranslateSubExpr() 221 Value *GEPOp = PHITranslateSubExpr(GEP->getOperand(i), CurBB, PredBB, DT); in PHITranslateSubExpr() 232 if (Value *V = SimplifyGEPInst(GEPOps, DL, TLI, DT, AC)) { in PHITranslateSubExpr() 246 (!DT || DT->dominates(GEPI->getParent(), PredBB))) { in PHITranslateSubExpr() 262 Value *LHS = PHITranslateSubExpr(Inst->getOperand(0), CurBB, PredBB, DT); in PHITranslateSubExpr() 282 if (Value *Res = SimplifyAddInst(LHS, RHS, isNSW, isNUW, DL, TLI, DT, AC)) { in PHITranslateSubExpr() 299 (!DT || DT->dominates(BO->getParent(), PredBB))) in PHITranslateSubExpr() 316 const DominatorTree *DT, in PHITranslateValue() argument [all …]
|
D | CaptureTracking.cpp | 62 CapturesBefore(bool ReturnCaptures, const Instruction *I, DominatorTree *DT, in CapturesBefore() 64 : OrderedBB(IC), BeforeHere(I), DT(DT), in CapturesBefore() 73 if (BeforeHere != I && !DT->isReachableFromEntry(BB)) in isSafeToPrune() 104 return !isPotentiallyReachableFromMany(Worklist, BB, DT); in isSafeToPrune() 110 if (BeforeHere != I && DT->dominates(BeforeHere, I) && in isSafeToPrune() 111 !isPotentiallyReachable(I, BeforeHere, DT)) in isSafeToPrune() 142 DominatorTree *DT; member 186 DominatorTree *DT, bool IncludeI, in PointerMayBeCapturedBefore() argument 192 if (!DT) in PointerMayBeCapturedBefore() 200 CapturesBefore CB(ReturnCaptures, I, DT, IncludeI, OBB); in PointerMayBeCapturedBefore()
|
D | CFG.cpp | 132 const DominatorTree *DT, const LoopInfo *LI) { in isPotentiallyReachableFromMany() argument 135 if (DT && !DT->isReachableFromEntry(StopBB)) in isPotentiallyReachableFromMany() 136 DT = nullptr; in isPotentiallyReachableFromMany() 148 if (DT && DT->dominates(BB, StopBB)) in isPotentiallyReachableFromMany() 175 const DominatorTree *DT, const LoopInfo *LI) { in isPotentiallyReachable() argument 183 DT, LI); in isPotentiallyReachable() 187 const DominatorTree *DT, const LoopInfo *LI) { in isPotentiallyReachable() argument 235 Worklist, const_cast<BasicBlock *>(B->getParent()), DT, LI); in isPotentiallyReachable()
|
D | InstructionSimplify.cpp | 51 const DominatorTree *DT; member 58 : DL(DL), TLI(tli), DT(dt), AC(ac), CxtI(cxti) {} in Query() 104 static bool ValueDominatesPHI(Value *V, PHINode *P, const DominatorTree *DT) { in ValueDominatesPHI() argument 117 if (DT) { in ValueDominatesPHI() 118 if (!DT->isReachableFromEntry(P->getParent())) in ValueDominatesPHI() 120 if (!DT->isReachableFromEntry(I->getParent())) in ValueDominatesPHI() 122 return DT->dominates(I, P); in ValueDominatesPHI() 461 if (!ValueDominatesPHI(RHS, PI, Q.DT)) in ThreadBinOpOverPHI() 467 if (!ValueDominatesPHI(LHS, PI, Q.DT)) in ThreadBinOpOverPHI() 508 if (!ValueDominatesPHI(RHS, PI, Q.DT)) in ThreadCmpOverPHI() [all …]
|
/external/llvm/lib/Transforms/Scalar/ |
D | LoopRotation.cpp | 126 DominatorTree *DT, ScalarEvolution *SE, in rotateLoop() argument 299 if (DT) { in rotateLoop() 304 DomTreeNode *OrigHeaderNode = DT->getNode(OrigHeader); in rotateLoop() 307 DomTreeNode *OrigPreheaderNode = DT->getNode(OrigPreheader); in rotateLoop() 309 DT->changeImmediateDominator(HeaderChildren[I], OrigPreheaderNode); in rotateLoop() 311 assert(DT->getNode(Exit)->getIDom() == OrigPreheaderNode); in rotateLoop() 312 assert(DT->getNode(NewHeader)->getIDom() == OrigPreheaderNode); in rotateLoop() 315 DT->changeImmediateDominator(OrigHeader, OrigLatch); in rotateLoop() 323 CriticalEdgeSplittingOptions(DT, LI).setPreserveLCSSA()); in rotateLoop() 343 *PI, Exit, CriticalEdgeSplittingOptions(DT, LI).setPreserveLCSSA()); in rotateLoop() [all …]
|
D | LICM.cpp | 80 static bool sink(Instruction &I, const LoopInfo *LI, const DominatorTree *DT, 83 const DominatorTree *DT, 87 const DominatorTree *DT, 100 DominatorTree *DT, TargetLibraryInfo *TLI, 143 DominatorTree *DT; // Dominator Tree for the current Loop. member 196 DT = &getAnalysis<DominatorTreeWrapperPass>().getDomTree(); in runOnLoop() 200 assert(L->isLCSSAForm(*DT) && "Loop is not in LCSSA form."); in runOnLoop() 250 Changed |= sinkRegion(DT->getNode(L->getHeader()), AA, LI, DT, TLI, CurLoop, in runOnLoop() 253 Changed |= hoistRegion(DT->getNode(L->getHeader()), AA, LI, DT, TLI, in runOnLoop() 267 PIC, LI, DT, CurLoop, in runOnLoop() [all …]
|
/external/llvm/include/llvm/Transforms/Utils/ |
D | SimplifyIndVar.h | 36 const DominatorTree *DT; 42 IVVisitor(): DT(nullptr), ShouldSplitOverflowIntrinsics(false) {} in IVVisitor() 45 const DominatorTree *getDomTree() const { return DT; } in getDomTree() 52 assert(DT && "Splitting overflow intrinsics requires a DomTree."); in setSplitOverflowIntrinsics() 60 bool simplifyUsersOfIV(PHINode *CurrIV, ScalarEvolution *SE, DominatorTree *DT, 66 bool simplifyLoopIVs(Loop *L, ScalarEvolution *SE, DominatorTree *DT,
|
D | BasicBlockUtils.h | 54 bool MergeBlockIntoPredecessor(BasicBlock *BB, DominatorTree *DT = nullptr, 83 DominatorTree *DT; member 89 CriticalEdgeSplittingOptions(DominatorTree *DT = nullptr, 91 : DT(DT), LI(LI), MergeIdenticalEdges(false), in DT() function 183 DominatorTree *DT = nullptr, LoopInfo *LI = nullptr); 191 DominatorTree *DT = nullptr, LoopInfo *LI = nullptr); 210 DominatorTree *DT = nullptr, 230 DominatorTree *DT = nullptr, 266 DominatorTree *DT = nullptr);
|
/external/clang/lib/Lex/ |
D | PPExpressions.cpp | 82 static bool EvaluateDefined(PPValue &Result, Token &PeekTok, DefinedTracker &DT, in EvaluateDefined() argument 150 DT.State = DefinedTracker::DefinedMacro; in EvaluateDefined() 151 DT.TheMacro = II; in EvaluateDefined() 163 static bool EvaluateValue(PPValue &Result, Token &PeekTok, DefinedTracker &DT, in EvaluateValue() argument 165 DT.State = DefinedTracker::Unknown; in EvaluateValue() 180 return(EvaluateDefined(Result, PeekTok, DT, ValueLive, PP)); in EvaluateValue() 330 if (EvaluateValue(Result, PeekTok, DT, ValueLive, PP)) return true; in EvaluateValue() 347 DT.State = DefinedTracker::Unknown; in EvaluateValue() 357 if (EvaluateValue(Result, PeekTok, DT, ValueLive, PP)) return true; in EvaluateValue() 364 if (EvaluateValue(Result, PeekTok, DT, ValueLive, PP)) return true; in EvaluateValue() [all …]
|
/external/llvm/include/llvm/IR/ |
D | Dominators.h | 43 DominatorTreeBase<GraphTraits<BasicBlock *>::NodeType> &DT, Function &F); 45 DominatorTreeBase<GraphTraits<Inverse<BasicBlock *>>::NodeType> &DT, 175 static NodeType *getEntryNode(DominatorTree *DT) { 176 return DT->getRootNode(); 227 DominatorTree DT; 236 DominatorTree &getDomTree() { return DT; } 237 const DominatorTree &getDomTree() const { return DT; } 247 void releaseMemory() override { DT.releaseMemory(); }
|