summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-01-08 22:38:29 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-01-08 22:38:29 +0000
commit090a19bd3cab8b4247bb41eecf20e9f0f211332b (patch)
tree3c7d1b2041a30c42072457ae7adc70ef5d873bd3 /llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
parent22ffa9b291e17a45ddc553817bbfee9d575e5600 (diff)
downloadbcm5719-llvm-090a19bd3cab8b4247bb41eecf20e9f0f211332b.tar.gz
bcm5719-llvm-090a19bd3cab8b4247bb41eecf20e9f0f211332b.zip
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
Diffstat (limited to 'llvm/lib/Bitcode/Writer/BitcodeWriter.cpp')
-rw-r--r--llvm/lib/Bitcode/Writer/BitcodeWriter.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
index 2eb67219c8a..8152799bbce 100644
--- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
+++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
@@ -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();
}
OpenPOWER on IntegriCloud