Ensure MDNode used as key in metadata linking map cannot be RAUWed
[oota-llvm.git] / lib / Bitcode / Reader / BitcodeReader.cpp
index 824a3716b831ec679792d4a7f123bbd218202f02..c7606fd488a0a7446ecb87e383aa5f7da37a5ed7 100644 (file)
@@ -3085,6 +3085,11 @@ void BitcodeReader::saveMetadataList(
         assert(MetadataToIDs[MD] == ID && "Inconsistent metadata value id");
         continue;
       }
+      if (N && N->isTemporary())
+        // Ensure that we assert if someone tries to RAUW this temporary
+        // metadata while it is the key of a map. The flag will be set back
+        // to true when the saved metadata list is destroyed.
+        N->setCanReplace(false);
       MetadataToIDs[MD] = ID;
     }
   }