diff -Naur a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
--- a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp	2026-04-21 11:38:40.755107300 +0800
+++ b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp	2026-04-21 11:43:57.036823200 +0800
@@ -1236,7 +1236,7 @@
     }
 
     Type *Ty = getTypeByID(Record[0]);
-    if (Ty->isMetadataTy() || Ty->isVoidTy()) {
+    if (!Ty || Ty->isMetadataTy() || Ty->isVoidTy()) {
       dropRecord();
       break;
     }
@@ -1278,7 +1278,7 @@
       return error("Invalid record");
 
     Type *Ty = getTypeByID(Record[0]);
-    if (Ty->isMetadataTy() || Ty->isVoidTy())
+    if (!Ty || Ty->isMetadataTy() || Ty->isVoidTy())
       return error("Invalid record");
 
     MetadataList.assignValue(