]> granicus.if.org Git - clang/commitdiff
Reapply:
authorEric Christopher <echristo@apple.com>
Fri, 17 Aug 2012 22:54:57 +0000 (22:54 +0000)
committerEric Christopher <echristo@apple.com>
Fri, 17 Aug 2012 22:54:57 +0000 (22:54 +0000)
Make isa part of objc_object at metadata generation time.

Noticed on inspection.

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

lib/CodeGen/CGDebugInfo.cpp

index fd1c7a33980776e696d8009cd140db91136cac4b..d537d5172ed320db2787047cc24668184d9411b6 100644 (file)
@@ -368,17 +368,19 @@ llvm::DIType CGDebugInfo::CreateType(const BuiltinType *BT) {
     
     llvm::DIType ISATy = DBuilder.createPointerType(OCTy, Size);
 
-    SmallVector<llvm::Value *, 16> EltTys;
+    llvm::MDNode *ObjTy = DBuilder.createStructType(TheCU, "objc_object", 
+                                                    getOrCreateMainFile(),
+                                                    0, 0, 0, 0, llvm::DIArray());
+    SmallVector<llvm::Value *, 1> EltTys;
     llvm::DIType FieldTy = 
-      DBuilder.createMemberType(getOrCreateMainFile(), "isa",
+      DBuilder.createMemberType(llvm::DIDescriptor(ObjTy), "isa",
                                 getOrCreateMainFile(), 0, Size,
                                 0, 0, 0, ISATy);
     EltTys.push_back(FieldTy);
     llvm::DIArray Elements = DBuilder.getOrCreateArray(EltTys);
-    
-    return DBuilder.createStructType(TheCU, "objc_object", 
-                                     getOrCreateMainFile(),
-                                     0, 0, 0, 0, Elements);
+
+    ObjTy->replaceOperandWith(10, Elements);
+    return llvm::DIType(ObjTy);
   }
   case BuiltinType::ObjCSel: {
     return