IR: Add 'distinct' MDNodes to bitcode and assembly
Propagate whether `MDNode`s are 'distinct' through the other types of IR (assembly and bitcode). This adds the `distinct` keyword to assembly. Currently, no one actually calls `MDNode::getDistinct()`, so these nodes only get created for: - self-references, which are never uniqued, and - nodes whose operands are replaced that hit a uniquing collision. The concept of distinct nodes is still not quite first-class, since distinct-ness doesn't yet survive across `MapMetadata()`. Part of PR22111. llvm-svn: 225474
This commit is contained in:
@@ -773,7 +773,9 @@ static void WriteMDNode(const MDNode *N,
|
||||
assert(!isa<LocalAsMetadata>(MD) && "Unexpected function-local metadata");
|
||||
Record.push_back(VE.getMetadataID(MD) + 1);
|
||||
}
|
||||
Stream.EmitRecord(bitc::METADATA_NODE, Record);
|
||||
Stream.EmitRecord(N->isDistinct() ? bitc::METADATA_DISTINCT_NODE
|
||||
: bitc::METADATA_NODE,
|
||||
Record);
|
||||
Record.clear();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user