diff options
author | Devang Patel <dpatel@apple.com> | 2009-10-07 16:37:55 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2009-10-07 16:37:55 +0000 |
commit | faad9ce705c2531b896c96c880137fdba93f96e6 (patch) | |
tree | a017b820b262d1b65d5c5fad3e2d02b21da20029 /lib/VMCore | |
parent | f57115c4bc5ab3acb1c2fafae53e340c9591a924 (diff) | |
download | external_llvm-faad9ce705c2531b896c96c880137fdba93f96e6.zip external_llvm-faad9ce705c2531b896c96c880137fdba93f96e6.tar.gz external_llvm-faad9ce705c2531b896c96c880137fdba93f96e6.tar.bz2 |
Do not assume that the module is set.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83462 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore')
-rw-r--r-- | lib/VMCore/AsmWriter.cpp | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/lib/VMCore/AsmWriter.cpp b/lib/VMCore/AsmWriter.cpp index 34ce7bb..3e628ae 100644 --- a/lib/VMCore/AsmWriter.cpp +++ b/lib/VMCore/AsmWriter.cpp @@ -1303,12 +1303,14 @@ public: : Out(o), Machine(Mac), TheModule(M), AnnotationWriter(AAW) { AddModuleTypesToPrinter(TypePrinter, NumberedTypes, M); // FIXME: Provide MDPrinter - 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(); + 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(); + } } } @@ -2029,15 +2031,16 @@ void AssemblyWriter::printInstruction(const Instruction &I) { } // Print Metadata info - MetadataContext &TheMetadata = I.getContext().getMetadata(); - const MetadataContext::MDMapTy *MDMap = TheMetadata.getMDs(&I); - if (MDMap) - for (MetadataContext::MDMapTy::const_iterator MI = MDMap->begin(), - ME = MDMap->end(); MI != ME; ++MI) - if (const MDNode *MD = dyn_cast_or_null<MDNode>(MI->second)) - Out << ", !" << MDNames[MI->first] - << " !" << Machine.getMetadataSlot(MD); - + if (!MDNames.empty()) { + MetadataContext &TheMetadata = I.getContext().getMetadata(); + const MetadataContext::MDMapTy *MDMap = TheMetadata.getMDs(&I); + if (MDMap) + for (MetadataContext::MDMapTy::const_iterator MI = MDMap->begin(), + ME = MDMap->end(); MI != ME; ++MI) + if (const MDNode *MD = dyn_cast_or_null<MDNode>(MI->second)) + Out << ", !" << MDNames[MI->first] + << " !" << Machine.getMetadataSlot(MD); + } printInfoComment(I); } |