summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2010-05-17 20:01:24 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2010-05-17 20:01:24 +0000
commitb843d9f833aa474ae700363a445b7409665c4a6e (patch)
tree520ffe4bab43107dfaafc43e71e13837e39737ab /include
parent2997985b4cafc2a1e562819a2f3e0c6abe5fb223 (diff)
downloadllvm-b843d9f833aa474ae700363a445b7409665c4a6e.tar.gz
llvm-b843d9f833aa474ae700363a445b7409665c4a6e.tar.bz2
llvm-b843d9f833aa474ae700363a445b7409665c4a6e.tar.xz
Optimize empty DenseMap iteration.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103962 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/ADT/DenseMap.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/include/llvm/ADT/DenseMap.h b/include/llvm/ADT/DenseMap.h
index 393473bd97..5c99473419 100644
--- a/include/llvm/ADT/DenseMap.h
+++ b/include/llvm/ADT/DenseMap.h
@@ -79,13 +79,14 @@ public:
typedef DenseMapIterator<KeyT, ValueT,
KeyInfoT, ValueInfoT, true> const_iterator;
inline iterator begin() {
- return iterator(Buckets, Buckets+NumBuckets);
+ // When the map is empty, avoid the overhead of AdvancePastEmptyBuckets().
+ return empty() ? end() : iterator(Buckets, Buckets+NumBuckets);
}
inline iterator end() {
return iterator(Buckets+NumBuckets, Buckets+NumBuckets);
}
inline const_iterator begin() const {
- return const_iterator(Buckets, Buckets+NumBuckets);
+ return empty() ? end() : const_iterator(Buckets, Buckets+NumBuckets);
}
inline const_iterator end() const {
return const_iterator(Buckets+NumBuckets, Buckets+NumBuckets);