| /llvm-project-15.0.7/clang/include/clang/Analysis/Analyses/ |
| H A D | Dominators.h | 38 using DomTreeNode = llvm::DomTreeNodeBase<CFGBlock>; 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() 160 void changeImmediateDominator(CFGBlock *N, CFGBlock *NewIDom) { in changeImmediateDominator() 165 bool isReachableFromEntry(const CFGBlock *A) { in isReachableFromEntry() 195 struct ChildrenGetterTy<clang::CFGBlock, IsPostDom> { 249 bool isControlDependent(CFGBlock *A, CFGBlock *B) { [all …]
|
| H A D | Consumed.h | 175 void intersectAtLoopHead(const CFGBlock *LoopHead, const CFGBlock *LoopBack, 220 bool allBackEdgesVisited(const CFGBlock *CurrBlock, 221 const CFGBlock *TargetBlock); 223 void addInfo(const CFGBlock *Block, ConsumedStateMap *StateMap, 225 void addInfo(const CFGBlock *Block, 228 ConsumedStateMap* borrowInfo(const CFGBlock *Block); 230 void discardInfo(const CFGBlock *Block); 232 std::unique_ptr<ConsumedStateMap> getInfo(const CFGBlock *Block); 234 bool isBackEdge(const CFGBlock *From, const CFGBlock *To); 235 bool isBackEdgeTarget(const CFGBlock *Block); [all …]
|
| H A 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;
|
| H A D | ThreadSafetyCommon.h | 106 void enterCFGBlock(const CFGBlock *B) {} in enterCFGBlock() 118 void enterCFGBlockBody(const CFGBlock *B) {} in enterCFGBlockBody() 127 void exitCFGBlockBody(const CFGBlock *B) {} in exitCFGBlockBody() 139 void exitCFGBlock(const CFGBlock *B) {} in exitCFGBlock() 142 void exitCFG(const CFGBlock *Last) {} in exitCFG() 183 SmallVector<CFGBlock*, 4> BackEdges; in walk() 460 void enterCFGBlock(const CFGBlock *B); 464 void enterCFGBlockBody(const CFGBlock *B); 467 void exitCFGBlockBody(const CFGBlock *B); 471 void exitCFGBlock(const CFGBlock *B); [all …]
|
| H A D | CFGReachabilityAnalysis.h | 24 class CFGBlock; variable 42 bool isReachable(const CFGBlock *Src, const CFGBlock *Dst); 45 void mapReachability(const CFGBlock *Dst);
|
| /llvm-project-15.0.7/clang/lib/Analysis/ |
| H A D | CFG.cpp | 585 std::pair<CFGBlock *, CFGBlock *> VisitLogicalOperator(BinaryOperator *B, 703 CFGBlock *NYS() { in NYS() 889 void addSuccessor(CFGBlock *B, CFGBlock *S, bool IsReachable = true) { in addSuccessor() 896 void addSuccessor(CFGBlock *B, CFGBlock *ReachableBlock, CFGBlock *AltBlock) { in addSuccessor() 2455 std::pair<CFGBlock*, CFGBlock*> 3609 CFGBlock * 5159 CFGBlock *Mem = getAllocator().Allocate<CFGBlock>(); in createBlock() 5289 CFGBlock::AdjacentBlock::AdjacentBlock(CFGBlock *B, bool IsReachable) in AdjacentBlock() 5294 CFGBlock::AdjacentBlock::AdjacentBlock(CFGBlock *B, CFGBlock *AlternateBlock) in AdjacentBlock() 5310 bool CFGBlock::FilterEdge(const CFGBlock::FilterOptions &F, in FilterEdge() [all …]
|
| H A D | ReachableCode.cpp | 88 const CFGBlock *Current = B; in isDeadReturn() 315 SmallVector<const CFGBlock*, 32> WL; in scanFromBlock() 328 const CFGBlock *item = WL.pop_back_val(); in scanFromBlock() 342 const CFGBlock *B = *I; in scanFromBlock() 388 SmallVector<const CFGBlock *, 10> WorkList; 403 void enqueue(const CFGBlock *block); 411 void reportDeadCode(const CFGBlock *B, 430 if (const CFGBlock *PredBlock = *I) { in isDeadCodeRoot() 504 if (const CFGBlock *predBlock = *I) in scanBackwards() 533 const CFGBlock *Block = I.first; in scanBackwards() [all …]
|
| H A 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()
|
| H A D | CFGStmtMap.cpp | 21 typedef llvm::DenseMap<const Stmt*, CFGBlock*> SMap; 26 CFGBlock *CFGStmtMap::getBlock(Stmt *S) { in getBlock() 35 CFGBlock *B = I->second; in getBlock() 48 static void Accumulate(SMap &SM, CFGBlock *B) { in Accumulate() 50 for (CFGBlock::iterator I = B->begin(), E = B->end(); I != E; ++I) { in Accumulate() 56 CFGBlock *&Entry = SM[CS->getStmt()]; in Accumulate()
|
| H A D | CalledOnceCheck.cpp | 512 clarify(const CFGBlock *Conditional, const CFGBlock *SuccWithoutCall) { in clarify() 598 NotCalledClarifier(const CFGBlock *Parent, const CFGBlock *SuccInQuestion) in NotCalledClarifier() 601 const CFGBlock *Parent, *SuccInQuestion; 716 const CFGBlock *Exit = &FunctionCFG.getExit(); in check() 739 void check(const CFGBlock *BB) { in check() 763 void checkEntry(const CFGBlock *Entry) { in checkEntry() 841 for (const CFGBlock *BB : FunctionCFG) { in checkEntry() 942 for (const CFGBlock *Succ : Parent->succs()) { in findAndReportNotCalledBranches() 1298 State &getState(const CFGBlock *BB) { in getState() 1322 State joinSuccessors(const CFGBlock *BB) const { in joinSuccessors() [all …]
|
| H A D | UninitializedValues.cpp | 132 ValueVector &getValueVector(const CFGBlock *block) { in getValueVector() 138 bool updateValueVectorWithScratch(const CFGBlock *block); 148 Value getValue(const CFGBlock *block, const CFGBlock *dstBlock, in getValue() 468 const CFGBlock *block; 557 SmallVector<const CFGBlock*, 32> Queue; in getUninitUse() 565 const CFGBlock *B = Queue.pop_back_val(); in getUninitUse() 573 const CFGBlock *Pred = *I; in getUninitUse() 644 const CFGBlock *Succ = *I; in getUninitUse() 853 const CFGBlock *pred = *I; in runOnBlock() 935 const CFGBlock &entry = cfg.getEntry(); in runUninitializedVariablesAnalysis() [all …]
|
| H A D | LiveVariables.cpp | 161 const CFGBlock *currentBlock; 166 const CFGBlock *CurrentBlock) in TransferFunctions() 478 LiveVariablesImpl::runOnBlock(const CFGBlock *block, in runOnBlock() 489 for (CFGBlock::const_reverse_iterator it = block->rbegin(), in runOnBlock() 542 for (const CFGBlock *B : cfg->nodes()) { in computeLiveness() 546 while (const CFGBlock *block = worklist.dequeue()) { in computeLiveness() 555 if (const CFGBlock *succ = *it) { in computeLiveness() 582 std::vector<const CFGBlock *> vec; in dumpBlockLiveness() 588 llvm::sort(vec, [](const CFGBlock *A, const CFGBlock *B) { in dumpBlockLiveness() 594 for (std::vector<const CFGBlock *>::iterator in dumpBlockLiveness() [all …]
|
| /llvm-project-15.0.7/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ |
| H A D | CoreEngine.h | 214 const CFGBlock *Block; 438 const CFGBlock *DstT; 439 const CFGBlock *DstF; 449 const CFGBlock *dstT, const CFGBlock *dstF) in BranchNodeBuilder() 459 const CFGBlock *dstT, const CFGBlock *dstF) in BranchNodeBuilder() 486 const CFGBlock *Src; 487 const CFGBlock &DispatchBlock; 499 CFGBlock::const_succ_iterator I; 511 const CFGBlock *getBlock() const { in getBlock() 534 const CFGBlock *Src; [all …]
|
| H A D | WorkList.h | 23 class CFGBlock; variable 30 const CFGBlock *block; 35 const CFGBlock *B, unsigned idx) in WorkListUnit() 54 const CFGBlock *getBlock() const { return block; } in getBlock() 68 void enqueue(ExplodedNode *N, const CFGBlock *B, unsigned idx) { in enqueue()
|
| /llvm-project-15.0.7/clang/include/clang/Analysis/FlowSensitive/ |
| H A 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() 71 void enqueueSuccessors(const CFGBlock *Block) { in enqueueSuccessors() 87 void enqueuePredecessors(const CFGBlock *Block) { in enqueuePredecessors()
|
| H A D | ControlFlowContext.h | 41 const llvm::DenseMap<const Stmt *, const CFGBlock *> &getStmtToBlock() const { in getStmtToBlock() 47 llvm::DenseMap<const Stmt *, const CFGBlock *> StmtToBlock) in ControlFlowContext() 51 llvm::DenseMap<const Stmt *, const CFGBlock *> StmtToBlock;
|
| /llvm-project-15.0.7/clang/include/clang/Analysis/ |
| H A D | CFG.h | 577 class CFGBlock { 628 std::conditional_t<IsConst, const CFGBlock *, CFGBlock *>; 679 std::conditional_t<IsConst, const CFGBlock *, CFGBlock *>; 799 CFGBlock *ReachableBlock; 808 AdjacentBlock(CFGBlock *B, CFGBlock *AlternateBlock); 822 operator CFGBlock*() const { 991 const CFGBlock *Dst); 998 const CFGBlock *From; 1280 CFGBlock *createBlock(); 1448 CFGBlock *Entry = nullptr; [all …]
|
| H A D | ProgramPoint.h | 232 const CFGBlock *getBlock() const { in getBlock() 237 const CFGBlock *B = getBlock(); in getFirstElement() 251 BlockExit(const CFGBlock *B, const LocationContext *L) in BlockExit() 254 const CFGBlock *getBlock() const { in getBlock() 341 const CFGBlock *getBlock() const { in getBlock() 504 BlockEdge(const CFGBlock *B1, const CFGBlock *B2, const LocationContext *L) in BlockEdge() 510 const CFGBlock *getSrc() const { in getSrc() 511 return static_cast<const CFGBlock*>(getData1()); in getSrc() 514 const CFGBlock *getDst() const { in getDst() 515 return static_cast<const CFGBlock*>(getData2()); in getDst() [all …]
|
| /llvm-project-15.0.7/clang/lib/StaticAnalyzer/Checkers/ |
| H A 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() 218 bool UnreachableCodeChecker::isInvalidPath(const CFGBlock *CB, in isInvalidPath() 230 const CFGBlock *pred = *CB->pred_begin(); in isInvalidPath() [all …]
|
| /llvm-project-15.0.7/clang/unittests/Analysis/ |
| H A 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 …]
|
| H A 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() 174 for (CFGBlock::CFGElementRef ElementRef : MainBlock->rrefs()) { in TEST() 236 std::vector<const CFGBlock *> ReferenceOrder; in TEST() 245 std::vector<const CFGBlock *> ForwardNodes; in TEST() 246 while (const CFGBlock *B = ForwardWorklist.dequeue()) in TEST() 261 std::vector<const CFGBlock *> BackwardNodes; in TEST() [all …]
|
| /llvm-project-15.0.7/clang/lib/Analysis/FlowSensitive/ |
| H A D | ControlFlowContext.cpp | 27 static llvm::DenseMap<const Stmt *, const CFGBlock *> 29 llvm::DenseMap<const Stmt *, const CFGBlock *> StmtToBlock; in buildStmtToBasicBlockMap() 30 for (const CFGBlock *Block : Cfg) { in buildStmtToBasicBlockMap() 65 llvm::DenseMap<const Stmt *, const CFGBlock *> StmtToBlock = in build()
|
| H A D | TypeErasedDataflowAnalysis.cpp | 63 static int blockIndexInPredecessor(const CFGBlock &Pred, in blockIndexInPredecessor() 64 const CFGBlock &Block) { in blockIndexInPredecessor() 66 Pred.succs(), [&Block](const CFGBlock::AdjacentBlock &Succ) { in blockIndexInPredecessor() 168 const CFGBlock &Block, const Environment &InitEnv, in computeBlockInputState() 170 llvm::DenseSet<const CFGBlock *> Preds; in computeBlockInputState() 205 for (const CFGBlock *Pred : Preds) { in computeBlockInputState() 307 const CFGBlock &Block, const Environment &InitEnv, in transferBlock() 345 const CFGBlock &Entry = CFCtx.getCFG().getEntry(); in runTypeErasedDataflowAnalysis() 365 while (const CFGBlock *Block = Worklist.dequeue()) { in runTypeErasedDataflowAnalysis() 397 for (const CFGBlock *Block : CFCtx.getCFG()) { in runTypeErasedDataflowAnalysis()
|
| /llvm-project-15.0.7/clang-tools-extra/clang-tidy/bugprone/ |
| H A D | UseAfterMoveCheck.cpp | 71 bool findInternal(const CFGBlock *Block, const Expr *MovingCall, 74 void getUsesAndReinits(const CFGBlock *Block, const ValueDecl *MovedVariable, 77 void getDeclRefs(const CFGBlock *Block, const Decl *MovedVariable, 79 void getReinits(const CFGBlock *Block, const ValueDecl *MovedVariable, 86 llvm::SmallPtrSet<const CFGBlock *, 8> Visited; 132 const CFGBlock *Block = BlockMap->blockContainingStmt(MovingCall); in find() 143 bool UseAfterMoveFinder::findInternal(const CFGBlock *Block, in findInternal() 215 const CFGBlock *Block, const ValueDecl *MovedVariable, in getUsesAndReinits() 258 const CFGBlock *Block, const Decl *MovedVariable, in getDeclRefs() 296 const CFGBlock *Block, const ValueDecl *MovedVariable, in getReinits()
|
| /llvm-project-15.0.7/clang/lib/StaticAnalyzer/Core/ |
| H A D | CoreEngine.cpp | 93 const CFGBlock *Entry = &(L->getCFG()->getEntry()); in ExecuteWorkList() 105 const CFGBlock *Succ = *(Entry->succ_begin()); in ExecuteWorkList() 238 const CFGBlock *Blk = L.getDst(); in HandleBlockEdge() 361 for (CFGBlock::const_succ_iterator it = B->succ_begin(), in HandleBlockExit() 363 if (const CFGBlock *succ = *it) { in HandleBlockExit() 466 const CFGBlock *B, in HandleCleanupTemporaryBranch() 488 void CoreEngine::HandlePostStmt(const CFGBlock *B, unsigned StmtIdx, in HandlePostStmt() 501 void CoreEngine::HandleVirtualBaseBranch(const CFGBlock *B, in HandleVirtualBaseBranch() 544 const CFGBlock *Block, unsigned Idx) { in enqueueStmtNode() 613 const CFGBlock *Block, unsigned Idx) { in enqueue() [all …]
|