]> granicus.if.org Git - clang/commitdiff
When creating a dwarf record type for an objc interface, make sure to propagate
authorChris Lattner <sabre@nondot.org>
Sat, 2 May 2009 01:13:16 +0000 (01:13 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 2 May 2009 01:13:16 +0000 (01:13 +0000)
the runtime version number onto it, so that the debugger knows it's an objc
interface, not a C struct.  rdar://6848435

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

lib/CodeGen/CGDebugInfo.cpp

index ce06a620034d9645b3ee45e8d881e95107ca46e8..ac1616b933d4fec32cb277d366f27d67439580b9 100644 (file)
@@ -383,6 +383,8 @@ llvm::DIType CGDebugInfo::CreateType(const ObjCInterfaceType *Ty,
   unsigned Line = PLoc.isInvalid() ? 0 : PLoc.getLine();
 
   
+  unsigned RuntimeLang = DefUnit.getRunTimeVersion();
+
   // To handle recursive interface, we
   // first generate a debug descriptor for the struct as a forward declaration.
   // Then (if it is a definition) we go through and get debug info for all of
@@ -391,7 +393,8 @@ llvm::DIType CGDebugInfo::CreateType(const ObjCInterfaceType *Ty,
   // uses of the forward declaration with the final definition.
   llvm::DIType FwdDecl =
     DebugFactory.CreateCompositeType(Tag, Unit, Name, DefUnit, Line, 0, 0, 0, 0,
-                                     llvm::DIType(), llvm::DIArray());
+                                     llvm::DIType(), llvm::DIArray(),
+                                     RuntimeLang);
   
   // If this is just a forward declaration, return it.
   if (Decl->isForwardDecl())
@@ -478,7 +481,8 @@ llvm::DIType CGDebugInfo::CreateType(const ObjCInterfaceType *Ty,
   
   llvm::DIType RealDecl =
     DebugFactory.CreateCompositeType(Tag, Unit, Name, DefUnit, Line, Size,
-                                     Align, 0, 0, llvm::DIType(), Elements);
+                                     Align, 0, 0, llvm::DIType(), Elements,
+                                     RuntimeLang);
 
   // Now that we have a real decl for the struct, replace anything using the
   // old decl with the new one.  This will recursively update the debug info.