IR: Change GenericDwarfNode::getHeader() to StringRef

Simplify the API to use a `StringRef` directly rather than exposing the
`MDString` bits underneath.

llvm-svn: 226876
diff --git a/llvm/lib/IR/Metadata.cpp b/llvm/lib/IR/Metadata.cpp
index e55d287..d439302 100644
--- a/llvm/lib/IR/Metadata.cpp
+++ b/llvm/lib/IR/Metadata.cpp
@@ -760,14 +760,10 @@
 }
 
 GenericDebugNode *GenericDebugNode::getImpl(LLVMContext &Context, unsigned Tag,
-                                            MDString *Header,
+                                            StringRef Header,
                                             ArrayRef<Metadata *> DwarfOps,
                                             StorageType Storage,
                                             bool ShouldCreate) {
-  // Canonicalize empty string to a nullptr.
-  if (Header && Header->getString().empty())
-    Header = nullptr;
-
   unsigned Hash = 0;
   if (Storage == Uniqued) {
     GenericDebugNodeInfo::KeyTy Key(Tag, Header, DwarfOps);
@@ -780,7 +776,9 @@
     assert(ShouldCreate && "Expected non-uniqued nodes to always be created");
   }
 
-  Metadata *PreOps[] = {Header};
+  // Use a nullptr for empty headers.
+  Metadata *PreOps[] = {Header.empty() ? nullptr
+                                       : MDString::get(Context, Header)};
   return storeImpl(new (DwarfOps.size() + 1) GenericDebugNode(
                        Context, Storage, Hash, Tag, PreOps, DwarfOps),
                    Storage, Context.pImpl->GenericDebugNodes);