AsmWriter: Handle broken metadata nodes

Print out temporary `MDNode`s so we don't crash in the verifier (or
during `dump()` output).

llvm-svn: 232417
diff --git a/llvm/unittests/IR/MetadataTest.cpp b/llvm/unittests/IR/MetadataTest.cpp
index 12fa3923..70ce294 100644
--- a/llvm/unittests/IR/MetadataTest.cpp
+++ b/llvm/unittests/IR/MetadataTest.cpp
@@ -251,6 +251,22 @@
     EXPECT_EQ(Expected_, Actual_);                                             \
   } while (false)
 
+TEST_F(MDNodeTest, PrintTemporary) {
+  MDNode *Arg = getNode();
+  TempMDNode Temp = MDNode::getTemporary(Context, Arg);
+  MDNode *N = getNode(Temp.get());
+  Module M("test", Context);
+  NamedMDNode *NMD = M.getOrInsertNamedMetadata("named");
+  NMD->addOperand(N);
+
+  EXPECT_PRINTER_EQ("!0 = !{!1}", N->print(OS, &M));
+  EXPECT_PRINTER_EQ("!1 = <temporary!> !{!2}", Temp->print(OS, &M));
+  EXPECT_PRINTER_EQ("!2 = !{}", Arg->print(OS, &M));
+
+  // Cleanup.
+  Temp->replaceAllUsesWith(Arg);
+}
+
 TEST_F(MDNodeTest, PrintFromModule) {
   Constant *C = ConstantInt::get(Type::getInt32Ty(Context), 7);
   MDString *S = MDString::get(Context, "foo");