diff options
author | Dan Gohman <gohman@apple.com> | 2011-02-09 19:25:31 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2011-02-09 19:25:31 +0000 |
commit | 697ffd61a47af38ac932628e942d75952f901fcd (patch) | |
tree | 3492d1f0a65682d83303704d260dd06f91341726 /include | |
parent | ff3dbde905a29164b0cec8532ee3b651c64144ee (diff) | |
download | external_llvm-697ffd61a47af38ac932628e942d75952f901fcd.zip external_llvm-697ffd61a47af38ac932628e942d75952f901fcd.tar.gz external_llvm-697ffd61a47af38ac932628e942d75952f901fcd.tar.bz2 |
Optimize po_iterator: don't do redundant lookups.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125211 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/ADT/PostOrderIterator.h | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/include/llvm/ADT/PostOrderIterator.h b/include/llvm/ADT/PostOrderIterator.h index 47e5b2b..e3b4994 100644 --- a/include/llvm/ADT/PostOrderIterator.h +++ b/include/llvm/ADT/PostOrderIterator.h @@ -56,8 +56,7 @@ class po_iterator : public std::iterator<std::forward_iterator_tag, void traverseChild() { while (VisitStack.back().second != GT::child_end(VisitStack.back().first)) { NodeType *BB = *VisitStack.back().second++; - if (!this->Visited.count(BB)) { // If the block is not visited... - this->Visited.insert(BB); + if (this->Visited.insert(BB)) { // If the block is not visited... VisitStack.push_back(std::make_pair(BB, GT::child_begin(BB))); } } @@ -72,8 +71,7 @@ class po_iterator : public std::iterator<std::forward_iterator_tag, inline po_iterator(NodeType *BB, SetType &S) : po_iterator_storage<SetType, ExtStorage>(S) { - if(!S.count(BB)) { - this->Visited.insert(BB); + if (this->Visited.insert(BB)) { VisitStack.push_back(std::make_pair(BB, GT::child_begin(BB))); traverseChild(); } |