diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-05-17 20:01:24 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-05-17 20:01:24 +0000 |
commit | b843d9f833aa474ae700363a445b7409665c4a6e (patch) | |
tree | 520ffe4bab43107dfaafc43e71e13837e39737ab /include/llvm/ADT/DenseMap.h | |
parent | 2997985b4cafc2a1e562819a2f3e0c6abe5fb223 (diff) | |
download | llvm-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/llvm/ADT/DenseMap.h')
-rw-r--r-- | include/llvm/ADT/DenseMap.h | 5 |
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); |