static NodeRef getEntryNode(clang::Stmt *S) { return S; }
- static inline ChildIteratorType child_begin(NodeRef N) {
+ static ChildIteratorType child_begin(NodeRef N) {
if (N) return N->child_begin();
else return ChildIteratorType();
}
- static inline ChildIteratorType child_end(NodeRef N) {
+ static ChildIteratorType child_end(NodeRef N) {
if (N) return N->child_end();
else return ChildIteratorType();
}
static NodeRef getEntryNode(const clang::Stmt *S) { return S; }
- static inline ChildIteratorType child_begin(NodeRef N) {
+ static ChildIteratorType child_begin(NodeRef N) {
if (N) return N->child_begin();
else return ChildIteratorType();
}
- static inline ChildIteratorType child_end(NodeRef N) {
+ static ChildIteratorType child_end(NodeRef N) {
if (N) return N->child_end();
else return ChildIteratorType();
}
typedef ::clang::DomTreeNode::iterator ChildIteratorType;
static NodeRef getEntryNode(NodeRef N) { return N; }
- static inline ChildIteratorType child_begin(NodeRef N) { return N->begin(); }
- static inline ChildIteratorType child_end(NodeRef N) { return N->end(); }
+ static ChildIteratorType child_begin(NodeRef N) { return N->begin(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->end(); }
typedef llvm::pointer_iterator<df_iterator<::clang::DomTreeNode *>>
nodes_iterator;
static NodeRef getEntryNode(::clang::CFGBlock *BB) { return BB; }
- static inline ChildIteratorType child_begin(NodeRef N) {
- return N->succ_begin();
- }
+ static ChildIteratorType child_begin(NodeRef N) { return N->succ_begin(); }
- static inline ChildIteratorType child_end(NodeRef N) { return N->succ_end(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->succ_end(); }
};
template <> struct GraphTraits< const ::clang::CFGBlock *> {
static NodeRef getEntryNode(const clang::CFGBlock *BB) { return BB; }
- static inline ChildIteratorType child_begin(NodeRef N) {
- return N->succ_begin();
- }
+ static ChildIteratorType child_begin(NodeRef N) { return N->succ_begin(); }
- static inline ChildIteratorType child_end(NodeRef N) { return N->succ_end(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->succ_end(); }
};
template <> struct GraphTraits<Inverse< ::clang::CFGBlock*> > {
return G.Graph;
}
- static inline ChildIteratorType child_begin(NodeRef N) {
- return N->pred_begin();
- }
+ static ChildIteratorType child_begin(NodeRef N) { return N->pred_begin(); }
- static inline ChildIteratorType child_end(NodeRef N) { return N->pred_end(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->pred_end(); }
};
template <> struct GraphTraits<Inverse<const ::clang::CFGBlock*> > {
return G.Graph;
}
- static inline ChildIteratorType child_begin(NodeRef N) {
- return N->pred_begin();
- }
+ static ChildIteratorType child_begin(NodeRef N) { return N->pred_begin(); }
- static inline ChildIteratorType child_end(NodeRef N) { return N->pred_end(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->pred_end(); }
};
// Traits for: CFG
typedef clang::ento::ExplodedNode::succ_iterator ChildIteratorType;
typedef llvm::df_iterator<NodeRef> nodes_iterator;
- static inline NodeRef getEntryNode(NodeRef N) { return N; }
+ static NodeRef getEntryNode(NodeRef N) { return N; }
- static inline ChildIteratorType child_begin(NodeRef N) {
- return N->succ_begin();
- }
+ static ChildIteratorType child_begin(NodeRef N) { return N->succ_begin(); }
- static inline ChildIteratorType child_end(NodeRef N) {
- return N->succ_end();
- }
+ static ChildIteratorType child_end(NodeRef N) { return N->succ_end(); }
- static inline nodes_iterator nodes_begin(NodeRef N) { return df_begin(N); }
+ static nodes_iterator nodes_begin(NodeRef N) { return df_begin(N); }
- static inline nodes_iterator nodes_end(NodeRef N) { return df_end(N); }
+ static nodes_iterator nodes_end(NodeRef N) { return df_end(N); }
};
template<> struct GraphTraits<const clang::ento::ExplodedNode*> {
typedef clang::ento::ExplodedNode::const_succ_iterator ChildIteratorType;
typedef llvm::df_iterator<NodeRef> nodes_iterator;
- static inline NodeRef getEntryNode(NodeRef N) { return N; }
+ static NodeRef getEntryNode(NodeRef N) { return N; }
- static inline ChildIteratorType child_begin(NodeRef N) {
- return N->succ_begin();
- }
+ static ChildIteratorType child_begin(NodeRef N) { return N->succ_begin(); }
- static inline ChildIteratorType child_end(NodeRef N) {
- return N->succ_end();
- }
+ static ChildIteratorType child_end(NodeRef N) { return N->succ_end(); }
- static inline nodes_iterator nodes_begin(NodeRef N) { return df_begin(N); }
+ static nodes_iterator nodes_begin(NodeRef N) { return df_begin(N); }
- static inline nodes_iterator nodes_end(NodeRef N) { return df_end(N); }
+ static nodes_iterator nodes_end(NodeRef N) { return df_end(N); }
};
} // end llvm namespace
typedef mapped_iterator<CallGraphNode::iterator, decltype(&CGNGetValue)>
ChildIteratorType;
- static inline ChildIteratorType child_begin(NodeRef N) {
+ static ChildIteratorType child_begin(NodeRef N) {
return ChildIteratorType(N->begin(), &CGNGetValue);
}
- static inline ChildIteratorType child_end(NodeRef N) {
+ static ChildIteratorType child_end(NodeRef N) {
return ChildIteratorType(N->end(), &CGNGetValue);
}
};
typedef mapped_iterator<CallGraphNode::const_iterator, decltype(&CGNGetValue)>
ChildIteratorType;
- static inline ChildIteratorType child_begin(NodeRef N) {
+ static ChildIteratorType child_begin(NodeRef N) {
return ChildIteratorType(N->begin(), &CGNGetValue);
}
- static inline ChildIteratorType child_end(NodeRef N) {
+ static ChildIteratorType child_end(NodeRef N) {
return ChildIteratorType(N->end(), &CGNGetValue);
}
};
static NodeRef getEntryNode(Interval *I) { return I; }
/// nodes_iterator/begin/end - Allow iteration over all nodes in the graph
- static inline ChildIteratorType child_begin(NodeRef N) {
- return succ_begin(N);
- }
- static inline ChildIteratorType child_end(NodeRef N) { return succ_end(N); }
+ static ChildIteratorType child_begin(NodeRef N) { return succ_begin(N); }
+ static ChildIteratorType child_end(NodeRef N) { return succ_end(N); }
};
template <> struct GraphTraits<Inverse<Interval*> > {
typedef Interval *NodeRef;
typedef Interval::pred_iterator ChildIteratorType;
static NodeRef getEntryNode(Inverse<Interval *> G) { return G.Graph; }
- static inline ChildIteratorType child_begin(NodeRef N) {
- return pred_begin(N);
- }
- static inline ChildIteratorType child_end(NodeRef N) { return pred_end(N); }
+ static ChildIteratorType child_begin(NodeRef N) { return pred_begin(N); }
+ static ChildIteratorType child_end(NodeRef N) { return pred_end(N); }
};
} // End llvm namespace
typedef LoopInfo::iterator ChildIteratorType;
static NodeRef getEntryNode(const Loop *L) { return L; }
- static inline ChildIteratorType child_begin(NodeRef N) { return N->begin(); }
- static inline ChildIteratorType child_end(NodeRef N) { return N->end(); }
+ static ChildIteratorType child_begin(NodeRef N) { return N->begin(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->end(); }
};
template <> struct GraphTraits<Loop*> {
typedef LoopInfo::iterator ChildIteratorType;
static NodeRef getEntryNode(Loop *L) { return L; }
- static inline ChildIteratorType child_begin(NodeRef N) { return N->begin(); }
- static inline ChildIteratorType child_end(NodeRef N) { return N->end(); }
+ static ChildIteratorType child_begin(NodeRef N) { return N->begin(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->end(); }
};
/// \brief Analysis pass that exposes the \c LoopInfo for a function.
typedef MachineBasicBlock::succ_iterator ChildIteratorType;
static NodeRef getEntryNode(MachineBasicBlock *BB) { return BB; }
- static inline ChildIteratorType child_begin(NodeRef N) {
- return N->succ_begin();
- }
- static inline ChildIteratorType child_end(NodeRef N) { return N->succ_end(); }
+ static ChildIteratorType child_begin(NodeRef N) { return N->succ_begin(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->succ_end(); }
};
template <> struct GraphTraits<const MachineBasicBlock *> {
typedef MachineBasicBlock::const_succ_iterator ChildIteratorType;
static NodeRef getEntryNode(const MachineBasicBlock *BB) { return BB; }
- static inline ChildIteratorType child_begin(NodeRef N) {
- return N->succ_begin();
- }
- static inline ChildIteratorType child_end(NodeRef N) { return N->succ_end(); }
+ static ChildIteratorType child_begin(NodeRef N) { return N->succ_begin(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->succ_end(); }
};
// Provide specializations of GraphTraits to be able to treat a
static NodeRef getEntryNode(Inverse<MachineBasicBlock *> G) {
return G.Graph;
}
- static inline ChildIteratorType child_begin(NodeRef N) {
- return N->pred_begin();
- }
- static inline ChildIteratorType child_end(NodeRef N) { return N->pred_end(); }
+ static ChildIteratorType child_begin(NodeRef N) { return N->pred_begin(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->pred_end(); }
};
template <> struct GraphTraits<Inverse<const MachineBasicBlock*> > {
static NodeRef getEntryNode(Inverse<const MachineBasicBlock *> G) {
return G.Graph;
}
- static inline ChildIteratorType child_begin(NodeRef N) {
- return N->pred_begin();
- }
- static inline ChildIteratorType child_end(NodeRef N) { return N->pred_end(); }
+ static ChildIteratorType child_begin(NodeRef N) { return N->pred_begin(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->pred_end(); }
};
typedef ChildIterator ChildIteratorType;
static NodeRef getEntryNode(NodeRef N) { return N; }
- static inline ChildIteratorType child_begin(NodeRef N) { return N->begin(); }
- static inline ChildIteratorType child_end(NodeRef N) { return N->end(); }
+ static ChildIteratorType child_begin(NodeRef N) { return N->begin(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->end(); }
};
template <class T> struct GraphTraits;
typedef MachineLoopInfo::iterator ChildIteratorType;
static NodeRef getEntryNode(const MachineLoop *L) { return L; }
- static inline ChildIteratorType child_begin(NodeRef N) { return N->begin(); }
- static inline ChildIteratorType child_end(NodeRef N) { return N->end(); }
+ static ChildIteratorType child_begin(NodeRef N) { return N->begin(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->end(); }
};
template <> struct GraphTraits<MachineLoop*> {
typedef MachineLoopInfo::iterator ChildIteratorType;
static NodeRef getEntryNode(MachineLoop *L) { return L; }
- static inline ChildIteratorType child_begin(NodeRef N) { return N->begin(); }
- static inline ChildIteratorType child_end(NodeRef N) { return N->end(); }
+ static ChildIteratorType child_begin(NodeRef N) { return N->begin(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->end(); }
};
} // End llvm namespace
template <> struct GraphTraits<SUnit*> {
typedef SUnit *NodeRef;
typedef SUnitIterator ChildIteratorType;
- static inline NodeRef getEntryNode(SUnit *N) { return N; }
- static inline ChildIteratorType child_begin(NodeRef N) {
+ static NodeRef getEntryNode(SUnit *N) { return N; }
+ static ChildIteratorType child_begin(NodeRef N) {
return SUnitIterator::begin(N);
}
- static inline ChildIteratorType child_end(NodeRef N) {
+ static ChildIteratorType child_end(NodeRef N) {
return SUnitIterator::end(N);
}
};
template <> struct GraphTraits<SDNode*> {
typedef SDNode *NodeRef;
typedef SDNodeIterator ChildIteratorType;
- static inline NodeRef getEntryNode(SDNode *N) { return N; }
- static inline ChildIteratorType child_begin(NodeRef N) {
+ static NodeRef getEntryNode(SDNode *N) { return N; }
+ static ChildIteratorType child_begin(NodeRef N) {
return SDNodeIterator::begin(N);
}
- static inline ChildIteratorType child_end(NodeRef N) {
+ static ChildIteratorType child_end(NodeRef N) {
return SDNodeIterator::end(N);
}
};
typedef succ_iterator ChildIteratorType;
static NodeRef getEntryNode(BasicBlock *BB) { return BB; }
- static inline ChildIteratorType child_begin(NodeRef N) {
- return succ_begin(N);
- }
- static inline ChildIteratorType child_end(NodeRef N) { return succ_end(N); }
+ static ChildIteratorType child_begin(NodeRef N) { return succ_begin(N); }
+ static ChildIteratorType child_end(NodeRef N) { return succ_end(N); }
};
template <> struct GraphTraits<const BasicBlock*> {
static NodeRef getEntryNode(const BasicBlock *BB) { return BB; }
- static inline ChildIteratorType child_begin(NodeRef N) {
- return succ_begin(N);
- }
- static inline ChildIteratorType child_end(NodeRef N) { return succ_end(N); }
+ static ChildIteratorType child_begin(NodeRef N) { return succ_begin(N); }
+ static ChildIteratorType child_end(NodeRef N) { return succ_end(N); }
};
// Provide specializations of GraphTraits to be able to treat a function as a
typedef BasicBlock *NodeRef;
typedef pred_iterator ChildIteratorType;
static NodeRef getEntryNode(Inverse<BasicBlock *> G) { return G.Graph; }
- static inline ChildIteratorType child_begin(NodeRef N) {
- return pred_begin(N);
- }
- static inline ChildIteratorType child_end(NodeRef N) { return pred_end(N); }
+ static ChildIteratorType child_begin(NodeRef N) { return pred_begin(N); }
+ static ChildIteratorType child_end(NodeRef N) { return pred_end(N); }
};
template <> struct GraphTraits<Inverse<const BasicBlock*> > {
typedef const BasicBlock *NodeRef;
typedef const_pred_iterator ChildIteratorType;
static NodeRef getEntryNode(Inverse<const BasicBlock *> G) { return G.Graph; }
- static inline ChildIteratorType child_begin(NodeRef N) {
- return pred_begin(N);
- }
- static inline ChildIteratorType child_end(NodeRef N) { return pred_end(N); }
+ static ChildIteratorType child_begin(NodeRef N) { return pred_begin(N); }
+ static ChildIteratorType child_end(NodeRef N) { return pred_end(N); }
};
typedef df_iterator<Node *, SmallPtrSet<NodeRef, 8>> nodes_iterator;
static NodeRef getEntryNode(NodeRef N) { return N; }
- static inline ChildIteratorType child_begin(NodeRef N) { return N->begin(); }
- static inline ChildIteratorType child_end(NodeRef N) { return N->end(); }
+ static ChildIteratorType child_begin(NodeRef N) { return N->begin(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->end(); }
static nodes_iterator nodes_begin(NodeRef N) {
return df_begin(getEntryNode(N));
typedef Type *NodeRef;
typedef Type::subtype_iterator ChildIteratorType;
- static inline NodeRef getEntryNode(Type *T) { return T; }
- static inline ChildIteratorType child_begin(NodeRef N) {
- return N->subtype_begin();
- }
- static inline ChildIteratorType child_end(NodeRef N) {
- return N->subtype_end();
- }
+ static NodeRef getEntryNode(Type *T) { return T; }
+ static ChildIteratorType child_begin(NodeRef N) { return N->subtype_begin(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->subtype_end(); }
};
template <> struct GraphTraits<const Type*> {
typedef const Type *NodeRef;
typedef Type::subtype_iterator ChildIteratorType;
- static inline NodeRef getEntryNode(NodeRef T) { return T; }
- static inline ChildIteratorType child_begin(NodeRef N) {
- return N->subtype_begin();
- }
- static inline ChildIteratorType child_end(NodeRef N) {
- return N->subtype_end();
- }
+ static NodeRef getEntryNode(NodeRef T) { return T; }
+ static ChildIteratorType child_begin(NodeRef N) { return N->subtype_begin(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->subtype_end(); }
};
// Create wrappers for C Binding types (see CBindingWrapping.h).
using ChildIteratorType = memoryaccess_def_iterator;
static NodeRef getEntryNode(NodeRef N) { return N; }
- static inline ChildIteratorType child_begin(NodeRef N) {
- return N->defs_begin();
- }
- static inline ChildIteratorType child_end(NodeRef N) { return N->defs_end(); }
+ static ChildIteratorType child_begin(NodeRef N) { return N->defs_begin(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->defs_end(); }
};
template <> struct GraphTraits<Inverse<MemoryAccess *>> {
using ChildIteratorType = MemoryAccess::iterator;
static NodeRef getEntryNode(NodeRef N) { return N; }
- static inline ChildIteratorType child_begin(NodeRef N) {
- return N->user_begin();
- }
- static inline ChildIteratorType child_end(NodeRef N) { return N->user_end(); }
+ static ChildIteratorType child_begin(NodeRef N) { return N->user_begin(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->user_end(); }
};
/// \brief Provide an iterator that walks defs, giving both the memory access,
typedef succ_const_iterator ChildIteratorType;
typedef pointer_iterator<Function::const_iterator> nodes_iterator;
- static inline NodeRef getEntryNode(const BlockFrequencyInfo *G) {
+ static NodeRef getEntryNode(const BlockFrequencyInfo *G) {
return &G->getFunction()->front();
}
static ChildIteratorType child_begin(const NodeRef N) {
typedef MachineBasicBlock::const_succ_iterator ChildIteratorType;
typedef pointer_iterator<MachineFunction::const_iterator> nodes_iterator;
- static inline NodeRef getEntryNode(const MachineBlockFrequencyInfo *G) {
+ static NodeRef getEntryNode(const MachineBlockFrequencyInfo *G) {
return &G->getFunction()->front();
}
typedef ArgumentGraphNode *NodeRef;
typedef SmallVectorImpl<ArgumentGraphNode *>::iterator ChildIteratorType;
- static inline NodeRef getEntryNode(NodeRef A) { return A; }
- static inline ChildIteratorType child_begin(NodeRef N) {
- return N->Uses.begin();
- }
- static inline ChildIteratorType child_end(NodeRef N) { return N->Uses.end(); }
+ static NodeRef getEntryNode(NodeRef A) { return A; }
+ static ChildIteratorType child_begin(NodeRef N) { return N->Uses.begin(); }
+ static ChildIteratorType child_end(NodeRef N) { return N->Uses.end(); }
};
template <>
struct GraphTraits<ArgumentGraph *> : public GraphTraits<ArgumentGraphNode *> {
typedef typename Graph<N>::NodeType *NodeRef;
typedef typename Graph<N>::ChildIterator ChildIteratorType;
- static inline NodeRef getEntryNode(const Graph<N> &G) {
- return G.AccessNode(0);
- }
- static inline ChildIteratorType child_begin(NodeRef Node) {
+ static NodeRef getEntryNode(const Graph<N> &G) { return G.AccessNode(0); }
+ static ChildIteratorType child_begin(NodeRef Node) {
return Graph<N>::child_begin(Node);
}
- static inline ChildIteratorType child_end(NodeRef Node) {
+ static ChildIteratorType child_end(NodeRef Node) {
return Graph<N>::child_end(Node);
}
};