Oops...I committed too much.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66867 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/SelectionDAG/FastISel.cpp b/lib/CodeGen/SelectionDAG/FastISel.cpp
index a0ed475..229376d 100644
--- a/lib/CodeGen/SelectionDAG/FastISel.cpp
+++ b/lib/CodeGen/SelectionDAG/FastISel.cpp
@@ -319,8 +319,9 @@
     DbgStopPointInst *SPI = cast<DbgStopPointInst>(I);
     if (DW && DW->ValidDebugInfo(SPI->getContext())) {
       DICompileUnit CU(cast<GlobalVariable>(SPI->getContext()));
-      unsigned SrcFile = DW->getOrCreateSourceID(CU.getDirectory(),
-                                                 CU.getFilename());
+      std::string Dir, FN;
+      unsigned SrcFile = DW->getOrCreateSourceID(CU.getDirectory(Dir),
+                                                 CU.getFilename(FN));
       unsigned Line = SPI->getLine();
       unsigned Col = SPI->getColumn();
       unsigned ID = DW->RecordSourceLine(Line, Col, SrcFile);
@@ -361,8 +362,9 @@
       // (most?) gdb expects.
       DISubprogram Subprogram(cast<GlobalVariable>(SP));
       DICompileUnit CompileUnit = Subprogram.getCompileUnit();
-      unsigned SrcFile = DW->getOrCreateSourceID(CompileUnit.getDirectory(),
-                                                 CompileUnit.getFilename());
+      std::string Dir, FN;
+      unsigned SrcFile = DW->getOrCreateSourceID(CompileUnit.getDirectory(Dir),
+                                                 CompileUnit.getFilename(FN));
 
       // Record the source line but does not create a label for the normal
       // function start. It will be emitted at asm emission time. However,
diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
index 0854aad..8c074e7 100644
--- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
@@ -1287,8 +1287,9 @@
       GlobalVariable *CU_GV = cast<GlobalVariable>(DSP->getCompileUnit());
       if (DW && (useDEBUG_LOC || useLABEL) && !CU_GV->isDeclaration()) {
         DICompileUnit CU(cast<GlobalVariable>(DSP->getCompileUnit()));
-        unsigned SrcFile = DW->getOrCreateSourceID(CU.getDirectory(),
-                                                   CU.getFilename());
+        std::string Dir, FN;
+        unsigned SrcFile = DW->getOrCreateSourceID(CU.getDirectory(Dir),
+                                                   CU.getFilename(FN));
 
         unsigned Line = DSP->getLine();
         unsigned Col = DSP->getColumn();
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
index 4afc3b5..71560fe2 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -2931,11 +2931,8 @@
     return false;
 
   GlobalVariable *GV = dyn_cast<GlobalVariable>(G->getGlobal());
-  if (GV) {
-    const char *SI = GetConstantStringInfo(GV, SrcDelta, false);
-    Str = (SI ? SI : "");
-    if (!Str.empty()) return true;
-  }
+  if (GV && GetConstantStringInfo(GV, Str, SrcDelta, false))
+    return true;
 
   return false;
 }
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
index b3a06ea..0dbc35b 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
@@ -335,8 +335,9 @@
 
             if (DW && DW->ValidDebugInfo(SPI->getContext())) {
               DICompileUnit CU(cast<GlobalVariable>(SPI->getContext()));
-              unsigned SrcFile = DW->getOrCreateSourceID(CU.getDirectory(),
-                                                         CU.getFilename());
+              std::string Dir, FN;
+              unsigned SrcFile = DW->getOrCreateSourceID(CU.getDirectory(Dir),
+                                                         CU.getFilename(FN));
               unsigned idx = MF->getOrCreateDebugLocID(SrcFile,
                                                        SPI->getLine(),
                                                        SPI->getColumn());
@@ -354,8 +355,9 @@
               if (DW->ValidDebugInfo(SP)) {
                 DISubprogram Subprogram(cast<GlobalVariable>(SP));
                 DICompileUnit CU(Subprogram.getCompileUnit());
-                unsigned SrcFile = DW->getOrCreateSourceID(CU.getDirectory(),
-                                                           CU.getFilename());
+                std::string Dir, FN;
+                unsigned SrcFile = DW->getOrCreateSourceID(CU.getDirectory(Dir),
+                                                           CU.getFilename(FN));
                 unsigned Line = Subprogram.getLineNumber();
                 DL = DebugLoc::get(MF->getOrCreateDebugLocID(SrcFile, Line, 0));
               }
@@ -3902,8 +3904,9 @@
                                       SPI.getColumn(),
                                       SPI.getContext()));
       DICompileUnit CU(cast<GlobalVariable>(SPI.getContext()));
-      unsigned SrcFile = DW->getOrCreateSourceID(CU.getDirectory(),
-                                                 CU.getFilename());
+      std::string Dir, FN;
+      unsigned SrcFile = DW->getOrCreateSourceID(CU.getDirectory(Dir),
+                                                 CU.getFilename(FN));
       unsigned idx = MF.getOrCreateDebugLocID(SrcFile,
                                               SPI.getLine(), SPI.getColumn());
       setCurDebugLoc(DebugLoc::get(idx));
@@ -3947,8 +3950,9 @@
       MachineFunction &MF = DAG.getMachineFunction();
       DISubprogram Subprogram(cast<GlobalVariable>(SP));
       DICompileUnit CompileUnit = Subprogram.getCompileUnit();
-      unsigned SrcFile = DW->getOrCreateSourceID(CompileUnit.getDirectory(),
-                                                 CompileUnit.getFilename());
+      std::string Dir, FN;
+      unsigned SrcFile = DW->getOrCreateSourceID(CompileUnit.getDirectory(Dir),
+                                                 CompileUnit.getFilename(FN));
 
       // Record the source line but does not create a label for the normal
       // function start. It will be emitted at asm emission time. However,
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
index 9475ffa..0392338 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
@@ -179,8 +179,8 @@
     }
   } else if (const DbgStopPointSDNode *D = dyn_cast<DbgStopPointSDNode>(Node)) {
     DICompileUnit CU(cast<GlobalVariable>(D->getCompileUnit()));
-    const char *FN = CU.getFilename();
-    Op += ": " + std::string(FN ? FN : "");
+    std::string FN;
+    Op += ": " + CU.getFilename(FN);
     Op += ":" + utostr(D->getLine());
     if (D->getColumn() != 0)
       Op += ":" + utostr(D->getColumn());