Home
last modified time | relevance | path

Searched refs:CFGBlock (Results 1 – 25 of 57) sorted by relevance

123

/llvm-project-15.0.7/clang/include/clang/Analysis/Analyses/
H A DDominators.h38 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 DConsumed.h175 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 DPostOrderCFGView.h44 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 DThreadSafetyCommon.h106 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 DCFGReachabilityAnalysis.h24 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 DCFG.cpp585 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 DReachableCode.cpp88 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 DCFGReachabilityAnalysis.cpp26 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 DCFGStmtMap.cpp21 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 DCalledOnceCheck.cpp512 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 DUninitializedValues.cpp132 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 DLiveVariables.cpp161 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 DCoreEngine.h214 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 DWorkList.h23 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 DDataflowWorklist.h25 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 DControlFlowContext.h41 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 DCFG.h577 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 DProgramPoint.h232 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 DUnreachableCodeChecker.cpp39 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 DCFGDominatorTree.cpp39 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 DCFGTest.cpp48 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 DControlFlowContext.cpp27 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 DTypeErasedDataflowAnalysis.cpp63 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 DUseAfterMoveCheck.cpp71 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 DCoreEngine.cpp93 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 …]

123