diff options
| author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2014-12-11 23:02:24 +0000 |
|---|---|---|
| committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2014-12-11 23:02:24 +0000 |
| commit | 5c7006e06283a61b26783a8141936466ad3dd3c7 (patch) | |
| tree | 53ee96f7df23bd560147b7b6c3ab955d20c54b6a /llvm/lib/Bitcode/Writer/ValueEnumerator.cpp | |
| parent | c9e266b8cf4abd43167b70609df6039da3ecd9b4 (diff) | |
| download | bcm5719-llvm-5c7006e06283a61b26783a8141936466ad3dd3c7.tar.gz bcm5719-llvm-5c7006e06283a61b26783a8141936466ad3dd3c7.zip | |
Bitcode: Add METADATA_NODE and METADATA_VALUE
This reflects the typelessness of `Metadata` in the bitcode format,
removing types from all metadata operands.
`METADATA_VALUE` represents a `ValueAsMetadata`, and always has two
fields: the type and the value.
`METADATA_NODE` represents an `MDNode`, and unlike `METADATA_OLD_NODE`,
doesn't store types. It stores operands at their ID+1 so that `0` can
reference `nullptr` operands.
Part of PR21532.
llvm-svn: 224073
Diffstat (limited to 'llvm/lib/Bitcode/Writer/ValueEnumerator.cpp')
| -rw-r--r-- | llvm/lib/Bitcode/Writer/ValueEnumerator.cpp | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp b/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp index cae20a86af9..c90dfbd776a 100644 --- a/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp +++ b/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp @@ -521,15 +521,9 @@ void ValueEnumerator::EnumerateNamedMDNode(const NamedMDNode *MD) { void ValueEnumerator::EnumerateMDNodeOperands(const MDNode *N) { for (unsigned i = 0, e = N->getNumOperands(); i != e; ++i) { Metadata *MD = N->getOperand(i); - if (!MD) { - EnumerateType(Type::getVoidTy(N->getContext())); + if (!MD) continue; - } assert(!isa<LocalAsMetadata>(MD) && "MDNodes cannot be function-local"); - if (auto *C = dyn_cast<ConstantAsMetadata>(MD)) { - EnumerateValue(C->getValue()); - continue; - } EnumerateMetadata(MD); } } |

