diff options
Diffstat (limited to 'lib/VMCore/AsmWriter.cpp')
-rw-r--r-- | lib/VMCore/AsmWriter.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/VMCore/AsmWriter.cpp b/lib/VMCore/AsmWriter.cpp index 742931e8fd..efcb07d76e 100644 --- a/lib/VMCore/AsmWriter.cpp +++ b/lib/VMCore/AsmWriter.cpp @@ -23,6 +23,7 @@ #include "llvm/InlineAsm.h" #include "llvm/Instruction.h" #include "llvm/Instructions.h" +#include "llvm/MDNode.h" #include "llvm/Module.h" #include "llvm/ValueSymbolTable.h" #include "llvm/TypeSymbolTable.h" @@ -945,10 +946,16 @@ static void WriteConstantInt(raw_ostream &Out, const Constant *CV, if (const MDNode *N = dyn_cast<MDNode>(CV)) { Out << "!{"; - for (MDNode::const_op_iterator I = N->op_begin(), E = N->op_end(); I != E;){ - TypePrinter.print((*I)->getType(), Out); - Out << ' '; - WriteAsOperandInternal(Out, *I, TypePrinter, Machine); + for (MDNode::const_elem_iterator I = N->elem_begin(), E = N->elem_end(); + I != E;) { + if (!*I) { + Out << "null"; + } else { + TypePrinter.print((*I)->getType(), Out); + Out << ' '; + WriteAsOperandInternal(Out, *I, TypePrinter, Machine); + } + if (++I != E) Out << ", "; } |