[cfe-commits] r109263 - /cfe/trunk/lib/CodeGen/CGDebugInfo.cpp

Devang Patel dpatel at apple.com
Fri Jul 23 13:38:37 PDT 2010


Author: dpatel
Date: Fri Jul 23 15:38:37 2010
New Revision: 109263

URL: http://llvm.org/viewvc/llvm-project?rev=109263&view=rev
Log:
There is no need to use separate dir name for AT_comp_dir attribute. Using absolute path for filename allows clients to query complete file location info from gdb breakpoints. Save constructed full file name.

Modified:
    cfe/trunk/lib/CodeGen/CGDebugInfo.cpp

Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=109263&r1=109262&r2=109263&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Fri Jul 23 15:38:37 2010
@@ -188,18 +188,25 @@
   if (MainFileName.empty())
     MainFileName = "<unknown>";
 
-  llvm::sys::Path AbsFileName(MainFileName);
-  AbsFileName.makeAbsolute();
-
   // The main file name provided via the "-main-file-name" option contains just
   // the file name itself with no path information. This file name may have had
   // a relative path, so we look into the actual file entry for the main
   // file to determine the real absolute path for the file.
-  std::string MainFileDir;
-  if (const FileEntry *MainFile = SM.getFileEntryForID(SM.getMainFileID()))
+  char *FileNamePtr = NULL;
+  if (const FileEntry *MainFile = SM.getFileEntryForID(SM.getMainFileID())) {
+    std::string MainFileDir;
     MainFileDir = MainFile->getDir()->getName();
-  else
-    MainFileDir = AbsFileName.getDirname();
+    llvm::sys::Path AbsFileDirName(MainFileDir);
+    AbsFileDirName.makeAbsolute();
+    AbsFileDirName.appendComponent(MainFileName);
+    FileNamePtr = DebugInfoNames.Allocate<char>(AbsFileDirName.size());
+    memcpy(FileNamePtr, AbsFileDirName.c_str(), AbsFileDirName.size());
+  } else {
+    llvm::sys::Path AbsFileDirName(MainFileName);
+    AbsFileDirName.makeAbsolute();
+    FileNamePtr = DebugInfoNames.Allocate<char>(AbsFileDirName.size());
+    memcpy(FileNamePtr, AbsFileDirName.c_str(), AbsFileDirName.size());
+  }
 
   unsigned LangTag;
   const LangOptions &LO = CGM.getLangOptions();
@@ -229,7 +236,7 @@
 
   // Create new compile unit.
   TheCU = DebugFactory.CreateCompileUnit(
-    LangTag, AbsFileName.getLast(), MainFileDir, Producer, true,
+    LangTag, FileNamePtr, llvm::StringRef(), Producer, true,
     LO.Optimize, CGM.getCodeGenOpts().DwarfDebugFlags, RuntimeVers);
 }
 





More information about the cfe-commits mailing list