diff --git a/include/llvm/Bitcode/Deserialize.h b/include/llvm/Bitcode/Deserialize.h index 72367e30d98..f883a5a0bc0 100644 --- a/include/llvm/Bitcode/Deserialize.h +++ b/include/llvm/Bitcode/Deserialize.h @@ -57,7 +57,7 @@ class Deserializer { BPatchEntry(void* P) : Ptr(reinterpret_cast(P)) {} bool hasFinalPtr() const { return Ptr & 0x1 ? false : true; } - void setFinalPtr(BPNode*& FreeList, void* P); + void setFinalPtr(BPNode*& FreeList, const void* P); BPNode* getBPNode() const { assert (!hasFinalPtr()); @@ -152,8 +152,11 @@ public: return *p; } + void RegisterPtr(unsigned PtrId, const void* Ptr); - void RegisterPtr(unsigned PtrId, void* Ptr); + void RegisterPtr(const void* Ptr) { + RegisterPtr(ReadInt(),Ptr); + } private: void ReadRecord(); diff --git a/lib/Bitcode/Reader/Deserialize.cpp b/lib/Bitcode/Reader/Deserialize.cpp index 4b58cf41dc1..9bc0f1578e7 100644 --- a/lib/Bitcode/Reader/Deserialize.cpp +++ b/lib/Bitcode/Reader/Deserialize.cpp @@ -98,9 +98,9 @@ void Deserializer::ReadCStr(std::vector& buff, bool isNullTerm) { buff.push_back('\0'); } -void Deserializer::RegisterPtr(unsigned PtrId,void* Ptr) { +void Deserializer::RegisterPtr(unsigned PtrId, const void* Ptr) { BPatchEntry& E = BPatchMap[PtrId]; - assert (E.hasFinalPtr() && "Pointer already registered."); + assert (!E.hasFinalPtr() && "Pointer already registered."); E.setFinalPtr(FreeList,Ptr); } @@ -145,7 +145,7 @@ uintptr_t Deserializer::ReadInternalRefPtr() { return E.getFinalPtr(); } -void Deserializer::BPatchEntry::setFinalPtr(BPNode*& FreeList, void* P) { +void Deserializer::BPatchEntry::setFinalPtr(BPNode*& FreeList, const void* P) { assert (!hasFinalPtr()); // Perform backpatching.