diff options
author | Dmitri Gribenko <gribozavr@gmail.com> | 2013-08-07 05:51:27 +0000 |
---|---|---|
committer | Dmitri Gribenko <gribozavr@gmail.com> | 2013-08-07 05:51:27 +0000 |
commit | 9e8eafa0f0ad36c3e4397e97b67b8245b04ba618 (patch) | |
tree | 9f4b483e7ec0ad12fbe55980ae87bb0252846457 /include/llvm/ADT | |
parent | 235089bdaefabcef9e9cde28eb3b0d8937b12a0d (diff) | |
download | external_llvm-9e8eafa0f0ad36c3e4397e97b67b8245b04ba618.zip external_llvm-9e8eafa0f0ad36c3e4397e97b67b8245b04ba618.tar.gz external_llvm-9e8eafa0f0ad36c3e4397e97b67b8245b04ba618.tar.bz2 |
YAMLTraits.h: replace DenseMap that used a bad implementation of DenseMapInfo
for StringRef with a StringMap
The bug is that the empty key compares equal to the tombstone key.
Also added an assertion to DenseMap to catch similar bugs in future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187866 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/ADT')
-rw-r--r-- | include/llvm/ADT/DenseMap.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/llvm/ADT/DenseMap.h b/include/llvm/ADT/DenseMap.h index d5aa864..71069ff 100644 --- a/include/llvm/ADT/DenseMap.h +++ b/include/llvm/ADT/DenseMap.h @@ -606,6 +606,9 @@ public: } void init(unsigned InitBuckets) { + assert(!KeyInfoT::isEqual(this->getEmptyKey(), this->getTombstoneKey()) && + "Bad implementation of KeyInfoT: empty key and tombstone key " + "should be different"); if (allocateBuckets(InitBuckets)) { this->BaseT::initEmpty(); } else { |