diff options
| author | Benjamin Kramer <benny.kra@googlemail.com> | 2015-04-10 12:46:44 +0000 |
|---|---|---|
| committer | Benjamin Kramer <benny.kra@googlemail.com> | 2015-04-10 12:46:44 +0000 |
| commit | 9b88fed3237bc6c6d7bd2d382ccbe2bb2ca441d6 (patch) | |
| tree | 26a790f4919ba650871559d2d240ea93332b5243 /llvm | |
| parent | fb8afb8f81d4a351b5a2bcf1e6344345f8c9c83e (diff) | |
| download | bcm5719-llvm-9b88fed3237bc6c6d7bd2d382ccbe2bb2ca441d6.tar.gz bcm5719-llvm-9b88fed3237bc6c6d7bd2d382ccbe2bb2ca441d6.zip | |
Microoptimize DenseMap::clear.
Cache NumEntries locally, it's only used in an assert and using the member
variable prevents the compiler from eliminating the tombstone check for types
with trivial destructors. No functionality change intended.
llvm-svn: 234589
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/include/llvm/ADT/DenseMap.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/include/llvm/ADT/DenseMap.h b/llvm/include/llvm/ADT/DenseMap.h index 7bfa8b22f7a..9c2365af6eb 100644 --- a/llvm/include/llvm/ADT/DenseMap.h +++ b/llvm/include/llvm/ADT/DenseMap.h @@ -100,16 +100,18 @@ public: } const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey(); + unsigned NumEntries = getNumEntries(); for (BucketT *P = getBuckets(), *E = getBucketsEnd(); P != E; ++P) { if (!KeyInfoT::isEqual(P->getFirst(), EmptyKey)) { if (!KeyInfoT::isEqual(P->getFirst(), TombstoneKey)) { P->getSecond().~ValueT(); - decrementNumEntries(); + --NumEntries; } P->getFirst() = EmptyKey; } } - assert(getNumEntries() == 0 && "Node count imbalance!"); + assert(NumEntries == 0 && "Node count imbalance!"); + setNumEntries(0); setNumTombstones(0); } @@ -257,7 +259,7 @@ public: const void *getPointerIntoBucketsArray() const { return getBuckets(); } protected: - DenseMapBase() {} + DenseMapBase() = default; void destroyAll() { if (getNumBuckets() == 0) // Nothing to do. |

