diff options
| author | Devang Patel <dpatel@apple.com> | 2009-07-30 01:02:04 +0000 |
|---|---|---|
| committer | Devang Patel <dpatel@apple.com> | 2009-07-30 01:02:04 +0000 |
| commit | 847fcacd48ee14ba319fea6c8f3ecf8f40214244 (patch) | |
| tree | f1201b3686efed52ea63ca6b5116025460d15332 /llvm/lib | |
| parent | 652529ec9c6ed91e7724a78e9f46c6c4802eda4a (diff) | |
| download | bcm5719-llvm-847fcacd48ee14ba319fea6c8f3ecf8f40214244.tar.gz bcm5719-llvm-847fcacd48ee14ba319fea6c8f3ecf8f40214244.zip | |
Check null NameMDNode elements.
llvm-svn: 77559
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/VMCore/AsmWriter.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/lib/VMCore/AsmWriter.cpp b/llvm/lib/VMCore/AsmWriter.cpp index bfdb0489b5f..8824fd9244f 100644 --- a/llvm/lib/VMCore/AsmWriter.cpp +++ b/llvm/lib/VMCore/AsmWriter.cpp @@ -647,7 +647,8 @@ void SlotTracker::processModule() { const NamedMDNode *NMD = I; for (unsigned i = 0, e = NMD->getNumElements(); i != e; ++i) { MDNode *MD = dyn_cast_or_null<MDNode>(NMD->getElement(i)); - CreateMetadataSlot(MD); + if (MD) + CreateMetadataSlot(MD); } } @@ -1392,7 +1393,7 @@ void AssemblyWriter::printModule(const Module *M) { Out << "!" << NMD->getName() << " = !{"; for (unsigned i = 0, e = NMD->getNumElements(); i != e; ++i) { if (i) Out << ", "; - MDNode *MD = cast<MDNode>(NMD->getElement(i)); + MDNode *MD = dyn_cast_or_null<MDNode>(NMD->getElement(i)); Out << '!' << Machine.getMetadataSlot(MD); } Out << "}\n"; @@ -2047,8 +2048,11 @@ void Value::print(raw_ostream &OS, AssemblyAnnotationWriter *AAW) const { OS << "!" << N->getName() << " = !{"; for (unsigned i = 0, e = N->getNumElements(); i != e; ++i) { if (i) OS << ", "; - MDNode *MD = cast<MDNode>(N->getElement(i)); - OS << '!' << SlotTable.getMetadataSlot(MD); + MDNode *MD = dyn_cast_or_null<MDNode>(N->getElement(i)); + if (MD) + OS << '!' << SlotTable.getMetadataSlot(MD); + else + OS << "null"; } OS << "}\n"; WriteMDNodes(OS, TypePrinter, SlotTable); |

