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/LLVMContextImpl.h b/llvm/lib/IR/LLVMContextImpl.h
index a009262..12b1507 100644
--- a/llvm/lib/IR/LLVMContextImpl.h
+++ b/llvm/lib/IR/LLVMContextImpl.h
@@ -288,8 +288,8 @@
 struct GenericDebugNodeInfo {
   struct KeyTy : MDNodeOpsKey {
     unsigned Tag;
-    MDString *Header;
-    KeyTy(unsigned Tag, MDString *Header, ArrayRef<Metadata *> DwarfOps)
+    StringRef Header;
+    KeyTy(unsigned Tag, StringRef Header, ArrayRef<Metadata *> DwarfOps)
         : MDNodeOpsKey(DwarfOps), Tag(Tag), Header(Header) {}
     KeyTy(GenericDebugNode *N)
         : MDNodeOpsKey(N, 1), Tag(N->getTag()), Header(N->getHeader()) {}
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);