aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2022-07-24 15:11:41 +0000
committerDimitry Andric <dim@FreeBSD.org>2023-02-08 19:04:38 +0000
commitfcaf7f8644a9988098ac6be2165bce3ea4786e91 (patch)
tree08a554363df16b968a623d651c09d82a5a0b1c65 /contrib/llvm-project/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
parent753f127f3ace09432b2baeffd71a308760641a62 (diff)
parent4b4fe385e49bd883fd183b5f21c1ea486c722e61 (diff)
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Bitcode/Reader/MetadataLoader.cpp')
-rw-r--r--contrib/llvm-project/llvm/lib/Bitcode/Reader/MetadataLoader.cpp27
1 files changed, 17 insertions, 10 deletions
diff --git a/contrib/llvm-project/llvm/lib/Bitcode/Reader/MetadataLoader.cpp b/contrib/llvm-project/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
index 0d57ae4ef9df..13d53a35084d 100644
--- a/contrib/llvm-project/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
+++ b/contrib/llvm-project/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
@@ -1226,10 +1226,12 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
break;
}
- MetadataList.assignValue(
- LocalAsMetadata::get(ValueList.getValueFwdRef(
- Record[1], Ty, TyID, /*ConstExprInsertBB*/ nullptr)),
- NextMetadataNo);
+ Value *V = ValueList.getValueFwdRef(Record[1], Ty, TyID,
+ /*ConstExprInsertBB*/ nullptr);
+ if (!V)
+ return error("Invalid value reference from old fn metadata");
+
+ MetadataList.assignValue(LocalAsMetadata::get(V), NextMetadataNo);
NextMetadataNo++;
break;
}
@@ -1248,8 +1250,11 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
if (Ty->isMetadataTy())
Elts.push_back(getMD(Record[i + 1]));
else if (!Ty->isVoidTy()) {
- auto *MD = ValueAsMetadata::get(ValueList.getValueFwdRef(
- Record[i + 1], Ty, TyID, /*ConstExprInsertBB*/ nullptr));
+ Value *V = ValueList.getValueFwdRef(Record[i + 1], Ty, TyID,
+ /*ConstExprInsertBB*/ nullptr);
+ if (!V)
+ return error("Invalid value reference from old metadata");
+ auto *MD = ValueAsMetadata::get(V);
assert(isa<ConstantAsMetadata>(MD) &&
"Expected non-function-local metadata");
Elts.push_back(MD);
@@ -1269,10 +1274,12 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
if (Ty->isMetadataTy() || Ty->isVoidTy())
return error("Invalid record");
- MetadataList.assignValue(
- ValueAsMetadata::get(ValueList.getValueFwdRef(
- Record[1], Ty, TyID, /*ConstExprInsertBB*/ nullptr)),
- NextMetadataNo);
+ Value *V = ValueList.getValueFwdRef(Record[1], Ty, TyID,
+ /*ConstExprInsertBB*/ nullptr);
+ if (!V)
+ return error("Invalid value reference from metadata");
+
+ MetadataList.assignValue(ValueAsMetadata::get(V), NextMetadataNo);
NextMetadataNo++;
break;
}