diff options
author | Ted Kremenek <kremenek@apple.com> | 2007-11-05 18:13:03 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2007-11-05 18:13:03 +0000 |
commit | 6fd11c53e9d17c4dec9945bbd21b30b7a84d3f6b (patch) | |
tree | 6b02d0ef4dcff6b42c91d658d400eee6975358fd | |
parent | 0c8a13b5107eb41d3c62d7b0db1bd17fa5549368 (diff) |
Fixed bug where tombstone key and empty key for DenseMap used for
pointer backpatching in deserializer were improperly created and
resulted in an assertion failure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43721 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Bitcode/Deserialize.h | 5 | ||||
-rw-r--r-- | include/llvm/Bitcode/Serialize.h | 1 |
2 files changed, 4 insertions, 2 deletions
diff --git a/include/llvm/Bitcode/Deserialize.h b/include/llvm/Bitcode/Deserialize.h index 332a842d28..2454dca565 100644 --- a/include/llvm/Bitcode/Deserialize.h +++ b/include/llvm/Bitcode/Deserialize.h @@ -56,13 +56,14 @@ class Deserializer { public: BPKey(unsigned PtrId) : Raw(PtrId << 1) { assert (PtrId > 0); } + BPKey(unsigned code, unsigned) : Raw(code) {} void MarkFinal() { Raw |= 0x1; } bool hasFinalPtr() const { return Raw & 0x1 ? true : false; } unsigned getID() const { return Raw >> 1; } - static inline BPKey getEmptyKey() { return 0; } - static inline BPKey getTombstoneKey() { return 1; } + static inline BPKey getEmptyKey() { return BPKey(0,0); } + static inline BPKey getTombstoneKey() { return BPKey(1,0); } static inline unsigned getHashValue(const BPKey& K) { return K.Raw & ~0x1; } static bool isEqual(const BPKey& K1, const BPKey& K2) { diff --git a/include/llvm/Bitcode/Serialize.h b/include/llvm/Bitcode/Serialize.h index be5adb85ea..197ab9f33d 100644 --- a/include/llvm/Bitcode/Serialize.h +++ b/include/llvm/Bitcode/Serialize.h @@ -32,6 +32,7 @@ class Serializer { public: Serializer(BitstreamWriter& stream, unsigned BlockID = 0); + ~Serializer(); template <typename T> |