OSDN Git Service

Do not work too hard to find type's file info. There is a special field to record...
authorDevang Patel <dpatel@apple.com>
Thu, 28 Oct 2010 19:50:08 +0000 (19:50 +0000)
committerDevang Patel <dpatel@apple.com>
Thu, 28 Oct 2010 19:50:08 +0000 (19:50 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117588 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Analysis/DebugInfo.h
lib/CodeGen/AsmPrinter/DwarfDebug.cpp

index ad824dd..41d8e14 100644 (file)
@@ -271,8 +271,14 @@ namespace llvm {
     bool isValid() const {
       return DbgNode && (isBasicType() || isDerivedType() || isCompositeType());
     }
-    StringRef getFilename() const    { return getCompileUnit().getFilename();}
-    StringRef getDirectory() const   { return getCompileUnit().getDirectory();}
+    StringRef getDirectory() const  { 
+      DIFile F = getFieldAs<DIFile>(3);
+      return F.getDirectory();
+    }
+    StringRef getFilename() const  { 
+      DIFile F = getFieldAs<DIFile>(3);
+      return F.getFilename();
+    }
 
     /// replaceAllUsesWith - Replace all uses of debug info referenced by
     /// this descriptor.
index b9c7d7a..55c2e24 100644 (file)
@@ -568,8 +568,8 @@ void DwarfDebug::addSourceLine(DIE *Die, DIType Ty) {
   unsigned Line = Ty.getLineNumber();
   if (Line == 0 || !Ty.getContext().Verify())
     return;
-  unsigned FileID = GetOrCreateSourceID(Ty.getContext().getDirectory(),
-                                        Ty.getContext().getFilename());
+  unsigned FileID = GetOrCreateSourceID(Ty.getDirectory(),
+                                        Ty.getFilename());
   assert(FileID && "Invalid file id");
   addUInt(Die, dwarf::DW_AT_decl_file, 0, FileID);
   addUInt(Die, dwarf::DW_AT_decl_line, 0, Line);