diff options
| author | Devang Patel <dpatel@apple.com> | 2009-10-22 01:01:24 +0000 |
|---|---|---|
| committer | Devang Patel <dpatel@apple.com> | 2009-10-22 01:01:24 +0000 |
| commit | ce6a1c97569ce65a60340b20e65abd0787969942 (patch) | |
| tree | 8eb4a75066bed7ec40bb723a7f3202d7f31c6f87 /lib/VMCore | |
| parent | 316e3268a8ba371b92ec57952a4c1ee1ef6ae5ce (diff) | |
| download | external_llvm-ce6a1c97569ce65a60340b20e65abd0787969942.zip external_llvm-ce6a1c97569ce65a60340b20e65abd0787969942.tar.gz external_llvm-ce6a1c97569ce65a60340b20e65abd0787969942.tar.bz2 | |
Fix getHandlerNames() interface. Now it populate clinet supplied small vector with handler names.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84820 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore')
| -rw-r--r-- | lib/VMCore/AsmWriter.cpp | 13 | ||||
| -rw-r--r-- | lib/VMCore/Metadata.cpp | 9 |
2 files changed, 13 insertions, 9 deletions
diff --git a/lib/VMCore/AsmWriter.cpp b/lib/VMCore/AsmWriter.cpp index 6ee2ece..e6ed81e 100644 --- a/lib/VMCore/AsmWriter.cpp +++ b/lib/VMCore/AsmWriter.cpp @@ -1295,7 +1295,7 @@ class AssemblyWriter { TypePrinting TypePrinter; AssemblyAnnotationWriter *AnnotationWriter; std::vector<const Type*> NumberedTypes; - DenseMap<unsigned, const char *> MDNames; + DenseMap<unsigned, StringRef> MDNames; public: inline AssemblyWriter(formatted_raw_ostream &o, SlotTracker &Mac, @@ -1306,11 +1306,12 @@ public: // FIXME: Provide MDPrinter if (M) { MetadataContext &TheMetadata = M->getContext().getMetadata(); - const StringMap<unsigned> *Names = TheMetadata.getHandlerNames(); - for (StringMapConstIterator<unsigned> I = Names->begin(), - E = Names->end(); I != E; ++I) { - const StringMapEntry<unsigned> &Entry = *I; - MDNames[I->second] = Entry.getKeyData(); + SmallVector<std::pair<unsigned, StringRef>, 4> Names; + TheMetadata.getHandlerNames(Names); + for (SmallVector<std::pair<unsigned, StringRef>, 4>::iterator + I = Names.begin(), + E = Names.end(); I != E; ++I) { + MDNames[I->first] = I->second; } } } diff --git a/lib/VMCore/Metadata.cpp b/lib/VMCore/Metadata.cpp index 3e3ea77..f45114c 100644 --- a/lib/VMCore/Metadata.cpp +++ b/lib/VMCore/Metadata.cpp @@ -305,9 +305,12 @@ MetadataContext::getMDs(const Instruction *Inst) { } /// getHandlerNames - Get handler names. This is used by bitcode -/// writer. -const StringMap<unsigned> *MetadataContext::getHandlerNames() { - return &MDHandlerNames; +/// writer and aswm writer. +void MetadataContext:: +getHandlerNames(SmallVectorImpl<std::pair<unsigned, StringRef> >&Names) const { + for (StringMap<unsigned>::const_iterator I = MDHandlerNames.begin(), + E = MDHandlerNames.end(); I != E; ++I) + Names.push_back(std::make_pair(I->second, I->first())); } /// ValueIsCloned - This handler is used to update metadata store |
