Lines Matching defs:CFGBlock

501 /// Represents CFGBlock terminator statement.
576 class CFGBlock {
619 /// A convenience class for comparing CFGElements, since methods of CFGBlock
621 /// around a (CFGBlock, Index) pair.
627 typename std::conditional<IsConst, const CFGBlock *, CFGBlock *>::type;
678 typename std::conditional<IsConst, const CFGBlock *, CFGBlock *>::type;
689 using ElementRef = typename CFGBlock::ElementRefImpl<IsConst>;
729 getIndexInBlock(CFGBlock::ElementRefIterator<true, IsOtherConst> E) {
735 getIndexInBlock(CFGBlock::ElementRefIterator<false, IsOtherConst> E) {
783 /// A numerical ID assigned to a CFGBlock during construction of the CFG.
799 CFGBlock *ReachableBlock;
800 llvm::PointerIntPair<CFGBlock *, 2> UnreachableBlock;
804 AdjacentBlock(CFGBlock *B, bool IsReachable);
808 AdjacentBlock(CFGBlock *B, CFGBlock *AlternateBlock);
811 CFGBlock *getReachableBlock() const {
816 CFGBlock *getPossiblyUnreachableBlock() const {
820 /// Provide an implicit conversion to CFGBlock* so that
821 /// AdjacentBlock can be substituted for CFGBlock*.
822 operator CFGBlock*() const {
826 CFGBlock& operator *() const {
830 CFGBlock* operator ->() const {
854 /// storage if the memory usage of CFGBlock becomes an issue.
857 /// The parent CFG that owns this CFGBlock.
861 explicit CFGBlock(unsigned blockid, BumpVectorContext &C, CFG *parent)
990 static bool FilterEdge(const FilterOptions &F, const CFGBlock *Src,
991 const CFGBlock *Dst);
998 const CFGBlock *From;
1002 const CFGBlock *from,
1016 const CFGBlock *operator*() const { return *I; }
1019 bool Filter(const CFGBlock *To) {
1065 return const_cast<CFGBlock*>(this)->getTerminatorCondition(StripParens);
1236 using ForcedBlkExprs = llvm::DenseMap<const Stmt *, const CFGBlock *>;
1280 CFGBlock *createBlock();
1285 void setEntry(CFGBlock *B) { Entry = B; }
1289 void setIndirectGotoBlock(CFGBlock *B) { IndirectGotoBlock = B; }
1295 using CFGBlockListTy = BumpVector<CFGBlock *>;
1301 CFGBlock & front() { return *Blocks.front(); }
1302 CFGBlock & back() { return *Blocks.back(); }
1319 CFGBlock & getEntry() { return *Entry; }
1320 const CFGBlock & getEntry() const { return *Entry; }
1321 CFGBlock & getExit() { return *Exit; }
1322 const CFGBlock & getExit() const { return *Exit; }
1324 CFGBlock * getIndirectGotoBlock() { return IndirectGotoBlock; }
1325 const CFGBlock * getIndirectGotoBlock() const { return IndirectGotoBlock; }
1327 using try_block_iterator = std::vector<const CFGBlock *>::const_iterator;
1337 void addTryDispatchBlock(const CFGBlock *block) {
1383 for (CFGBlock::const_iterator BI = (*I)->begin(), BE = (*I)->end();
1431 CFGBlock *Entry = nullptr;
1432 CFGBlock *Exit = nullptr;
1435 CFGBlock* IndirectGotoBlock = nullptr;
1445 std::vector<const CFGBlock *> TryDispatchBlocks;
1470 // Traits for: CFGBlock
1472 template <> struct GraphTraits< ::clang::CFGBlock *> {
1473 using NodeRef = ::clang::CFGBlock *;
1474 using ChildIteratorType = ::clang::CFGBlock::succ_iterator;
1476 static NodeRef getEntryNode(::clang::CFGBlock *BB) { return BB; }
1481 template <> struct GraphTraits<clang::CFGBlock>
1482 : GraphTraits<clang::CFGBlock *> {};
1484 template <> struct GraphTraits< const ::clang::CFGBlock *> {
1485 using NodeRef = const ::clang::CFGBlock *;
1486 using ChildIteratorType = ::clang::CFGBlock::const_succ_iterator;
1488 static NodeRef getEntryNode(const clang::CFGBlock *BB) { return BB; }
1493 template <> struct GraphTraits<const clang::CFGBlock>
1494 : GraphTraits<clang::CFGBlock *> {};
1496 template <> struct GraphTraits<Inverse< ::clang::CFGBlock *>> {
1497 using NodeRef = ::clang::CFGBlock *;
1498 using ChildIteratorType = ::clang::CFGBlock::const_pred_iterator;
1500 static NodeRef getEntryNode(Inverse<::clang::CFGBlock *> G) {
1508 template <> struct GraphTraits<Inverse<clang::CFGBlock>>
1509 : GraphTraits<clang::CFGBlock *> {};
1511 template <> struct GraphTraits<Inverse<const ::clang::CFGBlock *>> {
1512 using NodeRef = const ::clang::CFGBlock *;
1513 using ChildIteratorType = ::clang::CFGBlock::const_pred_iterator;
1515 static NodeRef getEntryNode(Inverse<const ::clang::CFGBlock *> G) {
1523 template <> struct GraphTraits<const Inverse<clang::CFGBlock>>
1524 : GraphTraits<clang::CFGBlock *> {};
1529 : public GraphTraits< ::clang::CFGBlock *> {
1539 : public GraphTraits<const ::clang::CFGBlock *> {
1558 : public GraphTraits<Inverse< ::clang::CFGBlock *>> {
1567 : public GraphTraits<Inverse<const ::clang::CFGBlock *>> {