]> granicus.if.org Git - clang/commitdiff
For debug information, get the main file name from the source manager
authorDouglas Gregor <dgregor@apple.com>
Thu, 18 Mar 2010 23:46:43 +0000 (23:46 +0000)
committerDouglas Gregor <dgregor@apple.com>
Thu, 18 Mar 2010 23:46:43 +0000 (23:46 +0000)
rather than from the -main-file-name flag, since the source manager
has proper path information. Fixes <rdar://problem/7769538>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98898 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGDebugInfo.cpp

index 60aa4e784e6cdcde79429c36b33d49d4b4de34b6..323c4588428f032a171680cac92e9e48a0446d4e 100644 (file)
@@ -104,9 +104,14 @@ llvm::DIFile CGDebugInfo::getOrCreateFile(SourceLocation Loc) {
 void CGDebugInfo::CreateCompileUnit() {
 
   // Get absolute path name.
-  std::string MainFileName = CGM.getCodeGenOpts().MainFileName;
-  if (MainFileName.empty())
+  SourceManager &SM = CGM.getContext().getSourceManager();
+  std::string MainFileName;  
+  if (const FileEntry *MainFile = SM.getFileEntryForID(SM.getMainFileID()))
+    MainFileName = MainFile->getName();
+  else if (CGM.getCodeGenOpts().MainFileName.empty())
     MainFileName = "<unknown>";
+  else
+    MainFileName = CGM.getCodeGenOpts().MainFileName;
   llvm::sys::Path AbsFileName(MainFileName);
   AbsFileName.makeAbsolute();