Lines Matching defs:CFGBlock

298 /// CFGTerminator - Represents CFGBlock terminator statement.
328 /// CFGBlock - Represents a single basic block in a source-level CFG.
354 class CFGBlock {
412 /// BlockID - A numerical ID assigned to a CFGBlock during construction
429 CFGBlock *ReachableBlock;
430 llvm::PointerIntPair<CFGBlock*, 2> UnreachableBlock;
434 AdjacentBlock(CFGBlock *B, bool IsReachable);
438 AdjacentBlock(CFGBlock *B, CFGBlock *AlternateBlock);
441 CFGBlock *getReachableBlock() const {
446 CFGBlock *getPossiblyUnreachableBlock() const {
450 /// Provide an implicit conversion to CFGBlock* so that
451 /// AdjacentBlock can be substituted for CFGBlock*.
452 operator CFGBlock*() const {
456 CFGBlock& operator *() const {
460 CFGBlock* operator ->() const {
485 /// storage if the memory usage of CFGBlock becomes an issue.
488 /// Parent - The parent CFG that owns this CFGBlock.
492 explicit CFGBlock(unsigned blockid, BumpVectorContext &C, CFG *parent)
496 ~CFGBlock() {}
571 static bool FilterEdge(const FilterOptions &F, const CFGBlock *Src,
572 const CFGBlock *Dst);
579 const CFGBlock *From;
582 const CFGBlock *from,
596 const CFGBlock *operator*() const { return *I; }
598 bool Filter(const CFGBlock *To) {
630 return const_cast<CFGBlock*>(this)->getTerminatorCondition(StripParens);
732 typedef llvm::DenseMap<const Stmt *, const CFGBlock*> ForcedBlkExprs;
766 /// same interface as Function::iterator - iterator returns CFGBlock
767 /// (not a pointer to CFGBlock).
770 typedef const CFGBlock value_type;
773 typedef BumpVector<CFGBlock*>::iterator ImplTy;
782 operator CFGBlock* () { return *I; }
793 typedef const CFGBlock value_type;
796 typedef BumpVector<CFGBlock*>::const_iterator ImplTy;
805 operator CFGBlock* () const { return *I; }
821 CFGBlock *createBlock();
826 void setEntry(CFGBlock *B) { Entry = B; }
830 void setIndirectGotoBlock(CFGBlock *B) { IndirectGotoBlock = B; }
836 typedef BumpVector<CFGBlock*> CFGBlockListTy;
842 CFGBlock & front() { return *Blocks.front(); }
843 CFGBlock & back() { return *Blocks.back(); }
864 CFGBlock & getEntry() { return *Entry; }
865 const CFGBlock & getEntry() const { return *Entry; }
866 CFGBlock & getExit() { return *Exit; }
867 const CFGBlock & getExit() const { return *Exit; }
869 CFGBlock * getIndirectGotoBlock() { return IndirectGotoBlock; }
870 const CFGBlock * getIndirectGotoBlock() const { return IndirectGotoBlock; }
872 typedef std::vector<const CFGBlock*>::const_iterator try_block_iterator;
880 void addTryDispatchBlock(const CFGBlock *block) {
920 for (CFGBlock::const_iterator BI=(*I)->begin(), BE=(*I)->end();
965 CFGBlock *Entry;
966 CFGBlock *Exit;
967 CFGBlock* IndirectGotoBlock; // Special block to contain collective dispatch
977 std::vector<const CFGBlock *> TryDispatchBlocks;
1000 // Traits for: CFGBlock
1002 template <> struct GraphTraits< ::clang::CFGBlock *> {
1003 typedef ::clang::CFGBlock NodeType;
1004 typedef ::clang::CFGBlock::succ_iterator ChildIteratorType;
1006 static NodeType* getEntryNode(::clang::CFGBlock *BB)
1016 template <> struct GraphTraits< const ::clang::CFGBlock *> {
1017 typedef const ::clang::CFGBlock NodeType;
1018 typedef ::clang::CFGBlock::const_succ_iterator ChildIteratorType;
1020 static NodeType* getEntryNode(const clang::CFGBlock *BB)
1030 template <> struct GraphTraits<Inverse< ::clang::CFGBlock*> > {
1031 typedef ::clang::CFGBlock NodeType;
1032 typedef ::clang::CFGBlock::const_pred_iterator ChildIteratorType;
1034 static NodeType *getEntryNode(Inverse< ::clang::CFGBlock*> G)
1044 template <> struct GraphTraits<Inverse<const ::clang::CFGBlock*> > {
1045 typedef const ::clang::CFGBlock NodeType;
1046 typedef ::clang::CFGBlock::const_pred_iterator ChildIteratorType;
1048 static NodeType *getEntryNode(Inverse<const ::clang::CFGBlock*> G)
1061 : public GraphTraits< ::clang::CFGBlock *> {
1072 : public GraphTraits<const ::clang::CFGBlock *> {
1091 : public GraphTraits<Inverse< ::clang::CFGBlock*> > {
1101 : public GraphTraits<Inverse<const ::clang::CFGBlock*> > {