Home
last modified time | relevance | path

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

1234

/external/llvm-project/clang/include/clang/Analysis/Analyses/
DDominators.h38 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 …]
DConsumed.h176 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 …]
DThreadSafetyCommon.h102 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 …]
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;
/external/clang/include/clang/Analysis/Analyses/
DDominators.h32 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 …]
DConsumed.h167 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 …]
DPostOrderCFGView.h43 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;
DThreadSafetyCommon.h84 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/
DCFG.cpp283 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 …]
DReachableCode.cpp49 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 …]
DLiveVariables.cpp31 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 …]
DUninitializedValues.cpp118 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 …]
DCFGReachabilityAnalysis.cpp25 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/
DCFG.cpp372 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 …]
DReachableCode.cpp49 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 …]
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()
/external/clang/include/clang/Analysis/
DCFG.h353 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/
DCoreEngine.h69 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/
DCoreEngine.h55 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/
DCFG.h576 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/
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()
70 void enqueueSuccessors(const CFGBlock *Block) { in enqueueSuccessors()
86 void enqueuePredecessors(const CFGBlock *Block) { in enqueuePredecessors()
/external/clang/lib/StaticAnalyzer/Checkers/
DUnreachableCodeChecker.cpp40 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/
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()
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/
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 …]
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()
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 …]

1234