aboutsummaryrefslogtreecommitdiff
path: root/clang/include/clang/Analysis/CFG.h
diff options
context:
space:
mode:
Diffstat (limited to 'clang/include/clang/Analysis/CFG.h')
-rw-r--r--clang/include/clang/Analysis/CFG.h18
1 files changed, 15 insertions, 3 deletions
diff --git a/clang/include/clang/Analysis/CFG.h b/clang/include/clang/Analysis/CFG.h
index 43fb523c863a..9e32eb8e066a 100644
--- a/clang/include/clang/Analysis/CFG.h
+++ b/clang/include/clang/Analysis/CFG.h
@@ -1307,6 +1307,12 @@ public:
iterator nodes_begin() { return iterator(Blocks.begin()); }
iterator nodes_end() { return iterator(Blocks.end()); }
+
+ llvm::iterator_range<iterator> nodes() { return {begin(), end()}; }
+ llvm::iterator_range<const_iterator> const_nodes() const {
+ return {begin(), end()};
+ }
+
const_iterator nodes_begin() const { return const_iterator(Blocks.begin()); }
const_iterator nodes_end() const { return const_iterator(Blocks.end()); }
@@ -1315,6 +1321,13 @@ public:
const_reverse_iterator rbegin() const { return Blocks.rbegin(); }
const_reverse_iterator rend() const { return Blocks.rend(); }
+ llvm::iterator_range<reverse_iterator> reverse_nodes() {
+ return {rbegin(), rend()};
+ }
+ llvm::iterator_range<const_reverse_iterator> const_reverse_nodes() const {
+ return {rbegin(), rend()};
+ }
+
CFGBlock & getEntry() { return *Entry; }
const CFGBlock & getEntry() const { return *Entry; }
CFGBlock & getExit() { return *Exit; }
@@ -1376,13 +1389,12 @@ public:
// Member templates useful for various batch operations over CFGs.
//===--------------------------------------------------------------------===//
- template <typename CALLBACK>
- void VisitBlockStmts(CALLBACK& O) const {
+ template <typename Callback> void VisitBlockStmts(Callback &O) const {
for (const_iterator I = begin(), E = end(); I != E; ++I)
for (CFGBlock::const_iterator BI = (*I)->begin(), BE = (*I)->end();
BI != BE; ++BI) {
if (Optional<CFGStmt> stmt = BI->getAs<CFGStmt>())
- O(const_cast<Stmt*>(stmt->getStmt()));
+ O(const_cast<Stmt *>(stmt->getStmt()));
}
}