aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/Bitcode/Deserialize.h7
-rw-r--r--lib/Bitcode/Reader/Deserialize.cpp6
2 files changed, 8 insertions, 5 deletions
diff --git a/include/llvm/Bitcode/Deserialize.h b/include/llvm/Bitcode/Deserialize.h
index 72367e30d9..f883a5a0bc 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<uintptr_t>(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 4b58cf41dc..9bc0f1578e 100644
--- a/lib/Bitcode/Reader/Deserialize.cpp
+++ b/lib/Bitcode/Reader/Deserialize.cpp
@@ -98,9 +98,9 @@ void Deserializer::ReadCStr(std::vector<char>& 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.