Augmented ReadPtr and ReadOwnedPtr to control whether or not a pointer is allowed to be backpatched
or can be registered with the deserializer to backpatch other pointers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43783 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Bitcode/Reader/Deserialize.cpp b/lib/Bitcode/Reader/Deserialize.cpp
index 5642f37..d4ed26b 100644
--- a/lib/Bitcode/Reader/Deserialize.cpp
+++ b/lib/Bitcode/Reader/Deserialize.cpp
@@ -152,7 +152,7 @@
   SetPtr(E,Ptr);
 }
 
-void Deserializer::ReadUIntPtr(uintptr_t& PtrRef) {
+void Deserializer::ReadUIntPtr(uintptr_t& PtrRef, bool AllowBackpatch) {
   unsigned PtrId = ReadInt();
   
   if (PtrId == 0) {
@@ -169,6 +169,9 @@
   if (HasFinalPtr(E))
     PtrRef = GetFinalPtr(E);
   else {
+    assert (AllowBackpatch &&
+            "Client forbids backpatching for this pointer.");
+    
     // Register backpatch.  Check the freelist for a BPNode.
     BPNode* N;