mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +00:00
Disallow null as a named metadata operand.
Make MDNode::destroy private. Fix the one thing that used MDNode::destroy, outside of MDNode itself. One should never delete or destroy an MDNode explicitly. MDNodes implicitly go away when there are no references to them (implementation details aside). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109028 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -803,10 +803,6 @@ bool BitcodeReader::ParseMetadata() {
|
||||
unsigned Size = Record.size();
|
||||
SmallVector<MDNode *, 8> Elts;
|
||||
for (unsigned i = 0; i != Size; ++i) {
|
||||
if (Record[i] == ~0U) {
|
||||
Elts.push_back(NULL);
|
||||
continue;
|
||||
}
|
||||
MDNode *MD = dyn_cast<MDNode>(MDValueList.getValueFwdRef(Record[i]));
|
||||
if (MD == 0)
|
||||
return Error("Malformed metadata record");
|
||||
|
@@ -558,12 +558,8 @@ static void WriteModuleMetadata(const ValueEnumerator &VE,
|
||||
Record.clear();
|
||||
|
||||
// Write named metadata operands.
|
||||
for (unsigned i = 0, e = NMD->getNumOperands(); i != e; ++i) {
|
||||
if (NMD->getOperand(i))
|
||||
Record.push_back(VE.getValueID(NMD->getOperand(i)));
|
||||
else
|
||||
Record.push_back(~0U);
|
||||
}
|
||||
for (unsigned i = 0, e = NMD->getNumOperands(); i != e; ++i)
|
||||
Record.push_back(VE.getValueID(NMD->getOperand(i)));
|
||||
Stream.EmitRecord(bitc::METADATA_NAMED_NODE, Record, 0);
|
||||
Record.clear();
|
||||
}
|
||||
|
Reference in New Issue
Block a user