IR: Disallow function-local metadata attachments

Metadata attachments to instructions cannot be function-local.

This is part of PR21532.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223574 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan P. N. Exon Smith
2014-12-06 02:29:44 +00:00
parent e1d7711d2f
commit 09ba28c27c
6 changed files with 17 additions and 7 deletions

View File

@ -62,6 +62,8 @@ bool LLParser::ValidateEndOfModule() {
NumberedMetadata[SlotNo] == nullptr)
return Error(MDList[i].Loc, "use of undefined metadata '!" +
Twine(SlotNo) + "'");
assert(!NumberedMetadata[SlotNo]->isFunctionLocal() &&
"Unexpected function-local metadata");
Inst->setMetadata(MDList[i].MDKind, NumberedMetadata[SlotNo]);
}
}
@ -1529,6 +1531,8 @@ bool LLParser::ParseInstructionMetadata(Instruction *Inst,
if (ParseMetadataListValue(ID, PFS))
return true;
assert(ID.Kind == ValID::t_MDNode);
if (ID.MDNodeVal->isFunctionLocal())
return TokError("unexpected function-local metadata");
Inst->setMetadata(MDK, ID.MDNodeVal);
} else {
unsigned NodeID = 0;