aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2009-07-23 01:07:34 +0000
committerDevang Patel <dpatel@apple.com>2009-07-23 01:07:34 +0000
commite059ba6ed246c714495848df111ef85d253152bb (patch)
treea694f76e139f86ee17d2144c01c79b9f36275706 /llvm/lib/Bitcode/Writer/ValueEnumerator.cpp
parentc5b4c0ec64b123989c16498b0f18e0c1bdb8f28b (diff)
downloadllvm-e059ba6ed246c714495848df111ef85d253152bb.zip
llvm-e059ba6ed246c714495848df111ef85d253152bb.tar.gz
llvm-e059ba6ed246c714495848df111ef85d253152bb.tar.bz2
Derive MDNode from MetadataBase instead of Constant. Emit MDNodes into METADATA_BLOCK in bitcode file.
llvm-svn: 76834
Diffstat (limited to 'llvm/lib/Bitcode/Writer/ValueEnumerator.cpp')
-rw-r--r--llvm/lib/Bitcode/Writer/ValueEnumerator.cpp28
1 files changed, 15 insertions, 13 deletions
diff --git a/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp b/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp
index 4a6eea4..38784ec 100644
--- a/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp
+++ b/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp
@@ -204,21 +204,23 @@ void ValueEnumerator::EnumerateValue(const Value *V) {
Values.push_back(std::make_pair(V, 1U));
ValueMap[V] = Values.size();
return;
- } else if (const MDNode *N = dyn_cast<MDNode>(C)) {
- for (MDNode::const_elem_iterator I = N->elem_begin(), E = N->elem_end();
- I != E; ++I) {
- if (*I)
- EnumerateValue(*I);
- else
- EnumerateType(Type::VoidTy);
- }
+ }
+ }
- Values.push_back(std::make_pair(V, 1U));
- ValueMap[V] = Values.size();
- return;
+ if (const MDNode *N = dyn_cast<MDNode>(V)) {
+ Values.push_back(std::make_pair(V, 1U));
+ ValueMap[V] = Values.size();
+ ValueID = Values.size();
+ for (MDNode::const_elem_iterator I = N->elem_begin(), E = N->elem_end();
+ I != E; ++I) {
+ if (*I)
+ EnumerateValue(*I);
+ else
+ EnumerateType(Type::VoidTy);
}
+ return;
}
-
+
// Add the value.
Values.push_back(std::make_pair(V, 1U));
ValueID = Values.size();
@@ -265,7 +267,7 @@ void ValueEnumerator::EnumerateOperandType(const Value *V) {
EnumerateOperandType(Elem);
}
}
- } else if (isa<MDString>(V))
+ } else if (isa<MDString>(V) || isa<MDNode>(V))
EnumerateValue(V);
}