/external/llvm-project/clang/include/clang/Analysis/Analyses/ |
D | Dominators.h | 38 using DomTreeNode = llvm::DomTreeNodeBase<CFGBlock>; 46 using DominatorTreeBase = llvm::DominatorTreeBase<CFGBlock, IsPostDom>; 61 CFGBlock *getRoot() const { in getRoot() 136 bool dominates(const CFGBlock *A, const CFGBlock *B) const { in dominates() 143 bool properlyDominates(const CFGBlock *A, const CFGBlock *B) const { in properlyDominates() 149 CFGBlock *findNearestCommonDominator(CFGBlock *A, CFGBlock *B) { in findNearestCommonDominator() 153 const CFGBlock *findNearestCommonDominator(const CFGBlock *A, in findNearestCommonDominator() 154 const CFGBlock *B) { in findNearestCommonDominator() 160 void changeImmediateDominator(CFGBlock *N, CFGBlock *NewIDom) { in changeImmediateDominator() 165 bool isReachableFromEntry(const CFGBlock *A) { in isReachableFromEntry() [all …]
|
D | Consumed.h | 176 void intersectAtLoopHead(const CFGBlock *LoopHead, const CFGBlock *LoopBack, 221 bool allBackEdgesVisited(const CFGBlock *CurrBlock, 222 const CFGBlock *TargetBlock); 224 void addInfo(const CFGBlock *Block, ConsumedStateMap *StateMap, 226 void addInfo(const CFGBlock *Block, 229 ConsumedStateMap* borrowInfo(const CFGBlock *Block); 231 void discardInfo(const CFGBlock *Block); 233 std::unique_ptr<ConsumedStateMap> getInfo(const CFGBlock *Block); 235 bool isBackEdge(const CFGBlock *From, const CFGBlock *To); 236 bool isBackEdgeTarget(const CFGBlock *Block); [all …]
|
D | ThreadSafetyCommon.h | 102 void enterCFG(CFG *Cfg, const NamedDecl *D, const CFGBlock *First) {} in enterCFG() 105 void enterCFGBlock(const CFGBlock *B) {} in enterCFGBlock() 111 void handlePredecessor(const CFGBlock *Pred) {} in handlePredecessor() 114 void handlePredecessorBackEdge(const CFGBlock *Pred) {} in handlePredecessorBackEdge() 117 void enterCFGBlockBody(const CFGBlock *B) {} in enterCFGBlockBody() 126 void exitCFGBlockBody(const CFGBlock *B) {} in exitCFGBlockBody() 132 void handleSuccessor(const CFGBlock *Succ) {} in handleSuccessor() 135 void handleSuccessorBackEdge(const CFGBlock *Succ) {} in handleSuccessorBackEdge() 138 void exitCFGBlock(const CFGBlock *B) {} in exitCFGBlock() 141 void exitCFG(const CFGBlock *Last) {} in exitCFG() [all …]
|
D | PostOrderCFGView.h | 44 struct iterator { using value_type = const CFGBlock *; }; 51 std::pair<llvm::NoneType, bool> insert(const CFGBlock *Block) { in insert() 67 bool alreadySet(const CFGBlock *Block) { in alreadySet() 74 std::vector<const CFGBlock *> Blocks; 76 using BlockOrderTy = llvm::DenseMap<const CFGBlock *, unsigned>; 82 using iterator = std::vector<const CFGBlock *>::reverse_iterator; 83 using const_iterator = std::vector<const CFGBlock *>::const_reverse_iterator; 101 bool operator()(const CFGBlock *b1, const CFGBlock *b2) const;
|
/external/clang/include/clang/Analysis/Analyses/ |
D | Dominators.h | 32 class CFGBlock; variable 33 typedef llvm::DomTreeNodeBase<CFGBlock> DomTreeNode; 41 llvm::DominatorTreeBase<CFGBlock>* DT; 44 DT = new llvm::DominatorTreeBase<CFGBlock>(false); in DominatorTree() 49 llvm::DominatorTreeBase<CFGBlock>& getBase() { return *DT; } in getBase() 53 inline CFGBlock *getRoot() const { in getRoot() 109 inline bool dominates(const CFGBlock* A, const CFGBlock* B) const { in dominates() 116 bool properlyDominates(const CFGBlock*A, const CFGBlock*B) const { in properlyDominates() 123 inline CFGBlock *findNearestCommonDominator(CFGBlock *A, CFGBlock *B) { in findNearestCommonDominator() 127 inline const CFGBlock *findNearestCommonDominator(const CFGBlock *A, in findNearestCommonDominator() [all …]
|
D | Consumed.h | 167 void intersectAtLoopHead(const CFGBlock *LoopHead, const CFGBlock *LoopBack, 219 bool allBackEdgesVisited(const CFGBlock *CurrBlock, 220 const CFGBlock *TargetBlock); 222 void addInfo(const CFGBlock *Block, ConsumedStateMap *StateMap, 224 void addInfo(const CFGBlock *Block, 227 ConsumedStateMap* borrowInfo(const CFGBlock *Block); 229 void discardInfo(const CFGBlock *Block); 231 std::unique_ptr<ConsumedStateMap> getInfo(const CFGBlock *Block); 233 bool isBackEdge(const CFGBlock *From, const CFGBlock *To); 234 bool isBackEdgeTarget(const CFGBlock *Block); [all …]
|
D | PostOrderCFGView.h | 43 struct iterator { typedef const CFGBlock *value_type; }; 50 std::pair<llvm::NoneType, bool> insert(const CFGBlock *Block) { in insert() 66 bool alreadySet(const CFGBlock *Block) { in alreadySet() 73 std::vector<const CFGBlock*> Blocks; 75 typedef llvm::DenseMap<const CFGBlock *, unsigned> BlockOrderTy; 79 typedef std::vector<const CFGBlock *>::reverse_iterator iterator; 80 typedef std::vector<const CFGBlock *>::const_reverse_iterator const_iterator; 99 bool operator()(const CFGBlock *b1, const CFGBlock *b2) const;
|
D | ThreadSafetyCommon.h | 84 void enterCFG(CFG *Cfg, const NamedDecl *D, const CFGBlock *First) {} in enterCFG() 87 void enterCFGBlock(const CFGBlock *B) {} in enterCFGBlock() 93 void handlePredecessor(const CFGBlock *Pred) {} in handlePredecessor() 96 void handlePredecessorBackEdge(const CFGBlock *Pred) {} in handlePredecessorBackEdge() 99 void enterCFGBlockBody(const CFGBlock *B) {} in enterCFGBlockBody() 108 void exitCFGBlockBody(const CFGBlock *B) {} in exitCFGBlockBody() 114 void handleSuccessor(const CFGBlock *Succ) {} in handleSuccessor() 117 void handleSuccessorBackEdge(const CFGBlock *Succ) {} in handleSuccessorBackEdge() 120 void exitCFGBlock(const CFGBlock *B) {} in exitCFGBlock() 123 void exitCFG(const CFGBlock *Last) {} in exitCFG() [all …]
|
/external/clang/lib/Analysis/ |
D | CFG.cpp | 283 BlockScopePosPair(CFGBlock *b, LocalScope::const_iterator scopePos) in BlockScopePosPair() 286 CFGBlock *block; 373 CFGBlock *Block; 374 CFGBlock *Succ; 377 CFGBlock *SwitchTerminatedBlock; 378 CFGBlock *DefaultCaseBlock; 379 CFGBlock *TryTerminatedBlock; 429 CFGBlock *VisitAddrLabelExpr(AddrLabelExpr *A, AddStmtChoice asc); 430 CFGBlock *VisitBinaryOperator(BinaryOperator *B, AddStmtChoice asc); 431 CFGBlock *VisitBreakStmt(BreakStmt *B); [all …]
|
D | ReachableCode.cpp | 49 static bool isTrivialDoWhile(const CFGBlock *B, const Stmt *S) { in isTrivialDoWhile() 61 static bool isDeadReturn(const CFGBlock *B, const Stmt *S) { in isDeadReturn() 65 const CFGBlock *Current = B; in isDeadReturn() 67 for (CFGBlock::const_reverse_iterator I = Current->rbegin(), in isDeadReturn() 252 static bool shouldTreatSuccessorsAsReachable(const CFGBlock *B, in shouldTreatSuccessorsAsReachable() 267 static unsigned scanFromBlock(const CFGBlock *Start, in scanFromBlock() 274 SmallVector<const CFGBlock*, 32> WL; in scanFromBlock() 287 const CFGBlock *item = WL.pop_back_val(); in scanFromBlock() 299 for (CFGBlock::const_succ_iterator I = item->succ_begin(), in scanFromBlock() 301 const CFGBlock *B = *I; in scanFromBlock() [all …]
|
D | LiveVariables.cpp | 31 SmallVector<const CFGBlock *, 20> worklist; 39 void enqueueBlock(const CFGBlock *block); 40 void enqueuePredecessors(const CFGBlock *block); 42 const CFGBlock *dequeue(); 49 void DataflowWorklist::enqueueBlock(const clang::CFGBlock *block) { in enqueueBlock() 56 void DataflowWorklist::enqueuePredecessors(const clang::CFGBlock *block) { in enqueuePredecessors() 58 for (CFGBlock::const_pred_iterator I = block->pred_begin(), in enqueuePredecessors() 73 const CFGBlock *DataflowWorklist::dequeue() { in dequeue() 76 const CFGBlock *b = worklist.pop_back_val(); in dequeue() 87 llvm::DenseMap<const CFGBlock *, LiveVariables::LivenessValues> blocksEndToLiveness; [all …]
|
D | UninitializedValues.cpp | 118 ValueVector &getValueVector(const CFGBlock *block) { in getValueVector() 124 bool updateValueVectorWithScratch(const CFGBlock *block); 134 Value getValue(const CFGBlock *block, const CFGBlock *dstBlock, in getValue() 158 static void printVector(const CFGBlock *block, ValueVector &bv, in printVector() 181 bool CFGBlockValues::updateValueVectorWithScratch(const CFGBlock *block) { in updateValueVectorWithScratch() 209 SmallVector<const CFGBlock *, 20> worklist; 223 void enqueueSuccessors(const CFGBlock *block); 224 const CFGBlock *dequeue(); 228 void DataflowWorklist::enqueueSuccessors(const clang::CFGBlock *block) { in enqueueSuccessors() 229 for (CFGBlock::const_succ_iterator I = block->succ_begin(), in enqueueSuccessors() [all …]
|
D | CFGReachabilityAnalysis.cpp | 25 bool CFGReverseBlockReachabilityAnalysis::isReachable(const CFGBlock *Src, in isReachable() 26 const CFGBlock *Dst) { in isReachable() 42 void CFGReverseBlockReachabilityAnalysis::mapReachability(const CFGBlock *Dst) { in mapReachability() 43 SmallVector<const CFGBlock *, 11> worklist; in mapReachability() 55 const CFGBlock *block = worklist.pop_back_val(); in mapReachability() 70 for (CFGBlock::const_pred_iterator i = block->pred_begin(), in mapReachability()
|
/external/llvm-project/clang/lib/Analysis/ |
D | CFG.cpp | 372 CFGBlock *block = nullptr; 376 BlockScopePosPair(CFGBlock *b, LocalScope::const_iterator scopePos) in BlockScopePosPair() 474 CFGBlock *Block = nullptr; 477 CFGBlock *Succ = nullptr; 482 CFGBlock *SwitchTerminatedBlock = nullptr; 483 CFGBlock *DefaultCaseBlock = nullptr; 487 CFGBlock *TryTerminatedBlock = nullptr; 543 CFGBlock *VisitInitListExpr(InitListExpr *ILE, AddStmtChoice asc); 544 CFGBlock *VisitAddrLabelExpr(AddrLabelExpr *A, AddStmtChoice asc); 545 CFGBlock *VisitBinaryOperator(BinaryOperator *B, AddStmtChoice asc); [all …]
|
D | ReachableCode.cpp | 49 static bool isTrivialDoWhile(const CFGBlock *B, const Stmt *S) { in isTrivialDoWhile() 69 static bool isBuiltinAssumeFalse(const CFGBlock *B, const Stmt *S, in isBuiltinAssumeFalse() 84 static bool isDeadReturn(const CFGBlock *B, const Stmt *S) { in isDeadReturn() 88 const CFGBlock *Current = B; in isDeadReturn() 90 for (CFGBlock::const_reverse_iterator I = Current->rbegin(), in isDeadReturn() 294 static bool shouldTreatSuccessorsAsReachable(const CFGBlock *B, in shouldTreatSuccessorsAsReachable() 309 static unsigned scanFromBlock(const CFGBlock *Start, in scanFromBlock() 316 SmallVector<const CFGBlock*, 32> WL; in scanFromBlock() 329 const CFGBlock *item = WL.pop_back_val(); in scanFromBlock() 341 for (CFGBlock::const_succ_iterator I = item->succ_begin(), in scanFromBlock() [all …]
|
D | CFGReachabilityAnalysis.cpp | 26 bool CFGReverseBlockReachabilityAnalysis::isReachable(const CFGBlock *Src, in isReachable() 27 const CFGBlock *Dst) { in isReachable() 42 void CFGReverseBlockReachabilityAnalysis::mapReachability(const CFGBlock *Dst) { in mapReachability() 43 SmallVector<const CFGBlock *, 11> worklist; in mapReachability() 55 const CFGBlock *block = worklist.pop_back_val(); in mapReachability() 70 for (CFGBlock::const_pred_iterator i = block->pred_begin(), in mapReachability()
|
/external/clang/include/clang/Analysis/ |
D | CFG.h | 353 class CFGBlock { 428 CFGBlock *ReachableBlock; 429 llvm::PointerIntPair<CFGBlock*, 2> UnreachableBlock; 433 AdjacentBlock(CFGBlock *B, bool IsReachable); 437 AdjacentBlock(CFGBlock *B, CFGBlock *AlternateBlock); 440 CFGBlock *getReachableBlock() const { in getReachableBlock() 445 CFGBlock *getPossiblyUnreachableBlock() const { in getPossiblyUnreachableBlock() 451 operator CFGBlock*() const { 455 CFGBlock& operator *() const { 459 CFGBlock* operator ->() const { [all …]
|
/external/llvm-project/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ |
D | CoreEngine.h | 69 std::vector<std::pair<const CFGBlock *, const ExplodedNode *>>; 109 void HandleBlockExit(const CFGBlock *B, ExplodedNode *Pred); 113 void HandlePostStmt(const CFGBlock *B, unsigned StmtIdx, ExplodedNode *Pred); 115 void HandleBranch(const Stmt *Cond, const Stmt *Term, const CFGBlock *B, 118 const CFGBlock *B, ExplodedNode *Pred); 121 void HandleStaticInit(const DeclStmt *DS, const CFGBlock *B, 124 void HandleVirtualBaseBranch(const CFGBlock *B, ExplodedNode *Pred); 167 void addAbortedBlock(const ExplodedNode *node, const CFGBlock *block) { in addAbortedBlock() 194 void enqueue(ExplodedNodeSet &Set, const CFGBlock *Block, unsigned Idx); 201 void enqueueStmtNode(ExplodedNode *N, const CFGBlock *Block, unsigned Idx); [all …]
|
/external/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ |
D | CoreEngine.h | 55 typedef std::vector<std::pair<const CFGBlock*, const ExplodedNode*> > 93 void HandleBlockExit(const CFGBlock *B, ExplodedNode *Pred); 97 void HandlePostStmt(const CFGBlock *B, unsigned StmtIdx, ExplodedNode *Pred); 99 void HandleBranch(const Stmt *Cond, const Stmt *Term, const CFGBlock *B, 102 const CFGBlock *B, ExplodedNode *Pred); 105 void HandleStaticInit(const DeclStmt *DS, const CFGBlock *B, 147 void addAbortedBlock(const ExplodedNode *node, const CFGBlock *block) { in addAbortedBlock() 171 void enqueue(ExplodedNodeSet &Set, const CFGBlock *Block, unsigned Idx); 178 void enqueueStmtNode(ExplodedNode *N, const CFGBlock *Block, unsigned Idx); 184 const CFGBlock *Block; [all …]
|
/external/llvm-project/clang/include/clang/Analysis/ |
D | CFG.h | 576 class CFGBlock { 627 std::conditional_t<IsConst, const CFGBlock *, CFGBlock *>; 678 std::conditional_t<IsConst, const CFGBlock *, CFGBlock *>; 688 using ElementRef = typename CFGBlock::ElementRefImpl<IsConst>; 728 getIndexInBlock(CFGBlock::ElementRefIterator<true, IsOtherConst> E) { in getIndexInBlock() 734 getIndexInBlock(CFGBlock::ElementRefIterator<false, IsOtherConst> E) { in getIndexInBlock() 798 CFGBlock *ReachableBlock; 799 llvm::PointerIntPair<CFGBlock *, 2> UnreachableBlock; 803 AdjacentBlock(CFGBlock *B, bool IsReachable); 807 AdjacentBlock(CFGBlock *B, CFGBlock *AlternateBlock); [all …]
|
/external/llvm-project/clang/include/clang/Analysis/FlowSensitive/ |
D | DataflowWorklist.h | 25 llvm::PriorityQueue<const CFGBlock *, 26 SmallVector<const CFGBlock *, QueueSize>, Comp> 35 void enqueueBlock(const CFGBlock *Block) { in enqueueBlock() 42 const CFGBlock *dequeue() { in dequeue() 45 const CFGBlock *B = WorkList.top(); in dequeue() 54 bool operator()(const CFGBlock *lhs, const CFGBlock *rhs) const { in operator() 70 void enqueueSuccessors(const CFGBlock *Block) { in enqueueSuccessors() 86 void enqueuePredecessors(const CFGBlock *Block) { in enqueuePredecessors()
|
/external/clang/lib/StaticAnalyzer/Checkers/ |
D | UnreachableCodeChecker.cpp | 40 static inline const Stmt *getUnreachableStmt(const CFGBlock *CB); 41 static void FindUnreachableEntryPoints(const CFGBlock *CB, 44 static bool isInvalidPath(const CFGBlock *CB, const ParentMap &PM); 45 static inline bool isEmptyCFGBlock(const CFGBlock *CB); 79 const CFGBlock *CB = BE->getBlock(); in checkEndAnalysis() 97 const CFGBlock *CB = *I; in checkEndAnalysis() 131 for (CFGBlock::const_iterator ci = CB->begin(), ce = CB->end(); in checkEndAnalysis() 170 void UnreachableCodeChecker::FindUnreachableEntryPoints(const CFGBlock *CB, in FindUnreachableEntryPoints() 175 for (CFGBlock::const_pred_iterator I = CB->pred_begin(), E = CB->pred_end(); in FindUnreachableEntryPoints() 192 const Stmt *UnreachableCodeChecker::getUnreachableStmt(const CFGBlock *CB) { in getUnreachableStmt() [all …]
|
/external/llvm-project/clang/lib/StaticAnalyzer/Checkers/ |
D | UnreachableCodeChecker.cpp | 39 static inline const Stmt *getUnreachableStmt(const CFGBlock *CB); 40 static void FindUnreachableEntryPoints(const CFGBlock *CB, 43 static bool isInvalidPath(const CFGBlock *CB, const ParentMap &PM); 44 static inline bool isEmptyCFGBlock(const CFGBlock *CB); 78 const CFGBlock *CB = BE->getBlock(); in checkEndAnalysis() 96 const CFGBlock *CB = *I; in checkEndAnalysis() 130 for (CFGBlock::const_iterator ci = CB->begin(), ce = CB->end(); in checkEndAnalysis() 178 void UnreachableCodeChecker::FindUnreachableEntryPoints(const CFGBlock *CB, in FindUnreachableEntryPoints() 183 for (CFGBlock::const_pred_iterator I = CB->pred_begin(), E = CB->pred_end(); in FindUnreachableEntryPoints() 200 const Stmt *UnreachableCodeChecker::getUnreachableStmt(const CFGBlock *CB) { in getUnreachableStmt() [all …]
|
/external/llvm-project/clang/unittests/Analysis/ |
D | CFGDominatorTree.cpp | 39 CFGBlock *ExitBlock = *cfg->begin(); in TEST() 42 CFGBlock *SwitchBlock = *(cfg->begin() + 1); in TEST() 44 CFGBlock *CaseABlock = *(cfg->begin() + 2); in TEST() 46 CFGBlock *EntryBlock = *(cfg->begin() + 3); in TEST() 128 CFGBlock *ExitBlock = *cfg->begin(); in TEST() 131 CFGBlock *NullDerefBlock = *(cfg->begin() + 1); in TEST() 133 CFGBlock *SecondThenBlock = *(cfg->begin() + 2); in TEST() 135 CFGBlock *SecondIfBlock = *(cfg->begin() + 3); in TEST() 137 CFGBlock *FirstIfBlock = *(cfg->begin() + 4); in TEST() 139 CFGBlock *EntryBlock = *(cfg->begin() + 5); in TEST() [all …]
|
D | CFGTest.cpp | 48 CFGBlock *Block = *B.getCFG()->getEntry().succ_begin(); in TEST() 117 CFGBlock *MainBlock = *(Cfg->begin() + 1); in TEST() 119 constexpr CFGBlock::ref_iterator::difference_type MainBlockSize = 4; in TEST() 127 for (CFGBlock::CFGElementRef ElementRef : MainBlock->refs()) { in TEST() 149 const CFGBlock *CMainBlock = MainBlock; in TEST() 151 for (CFGBlock::ConstCFGElementRef ElementRef : CMainBlock->refs()) { in TEST() 174 for (CFGBlock::CFGElementRef ElementRef : MainBlock->rrefs()) { in TEST() 198 for (CFGBlock::ConstCFGElementRef ElementRef : CMainBlock->rrefs()) { in TEST() 236 std::vector<const CFGBlock *> ReferenceOrder; in TEST() 245 std::vector<const CFGBlock *> ForwardNodes; in TEST() [all …]
|