]> granicus.if.org Git - clang/commitdiff
Use appropriate context descriptor in RecordDecl's debug info.
authorDevang Patel <dpatel@apple.com>
Mon, 1 Feb 2010 22:40:08 +0000 (22:40 +0000)
committerDevang Patel <dpatel@apple.com>
Mon, 1 Feb 2010 22:40:08 +0000 (22:40 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95016 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGDebugInfo.cpp

index 167995863a7e5fc643c38d7d94c30358ba15c1ae..fffba853480bfa7069f0dd99ceb0a9e2008c8ef4 100644 (file)
@@ -59,7 +59,7 @@ llvm::DIDescriptor CGDebugInfo::getContextDescriptor(const Decl *Context,
     I = RegionMap.find(Context);
   if (I != RegionMap.end())
     return llvm::DIDescriptor(dyn_cast_or_null<llvm::MDNode>(I->second));
-  
+
   // Check namespace.
   if (const NamespaceDecl *NSDecl = dyn_cast<NamespaceDecl>(Context))
     return llvm::DIDescriptor(getOrCreateNameSpace(NSDecl, CompileUnit));
@@ -789,8 +789,11 @@ llvm::DIType CGDebugInfo::CreateType(const RecordType *Ty,
   // FIXME : Use RecordDecl's DeclContext's descriptor. As a temp. step
   // use type's name in FwdDecl.
   std::string STy = QualType(Ty, 0).getAsString();
+  llvm::DIDescriptor FDContext = 
+    getContextDescriptor(dyn_cast<Decl>(RD->getDeclContext()), Unit);
   llvm::DICompositeType FwdDecl =
-    DebugFactory.CreateCompositeType(Tag, Unit, STy.c_str(),
+    DebugFactory.CreateCompositeType(Tag, FDContext,
+                                     STy.c_str(),
                                      DefUnit, Line, 0, 0, 0, 0,
                                      llvm::DIType(), llvm::DIArray());
 
@@ -832,8 +835,11 @@ llvm::DIType CGDebugInfo::CreateType(const RecordType *Ty,
   uint64_t Size = CGM.getContext().getTypeSize(Ty);
   uint64_t Align = CGM.getContext().getTypeAlign(Ty);
 
+  llvm::DIDescriptor RDContext =  
+    getContextDescriptor(dyn_cast<Decl>(RD->getDeclContext()), Unit);
   llvm::DICompositeType RealDecl =
-    DebugFactory.CreateCompositeType(Tag, Unit, RD->getName(),
+    DebugFactory.CreateCompositeType(Tag, RDContext,
+                                     RD->getName(),
                                      DefUnit, Line, Size, Align, 0, 0, 
                                      llvm::DIType(), Elements, 
                                      0, ContainingType);