]> granicus.if.org Git - clang/commitdiff
The instance size of a metaclass should be the size of a class. This is not, in...
authorDavid Chisnall <csdavec@swan.ac.uk>
Mon, 21 Feb 2011 23:47:40 +0000 (23:47 +0000)
committerDavid Chisnall <csdavec@swan.ac.uk>
Mon, 21 Feb 2011 23:47:40 +0000 (23:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126161 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGObjCGNU.cpp

index d481e77926741e53e12913a7beb4e03355145dcc..8950f2131fe17c88b8d8772ed3d3d4aae87c28d6 100644 (file)
@@ -949,7 +949,12 @@ llvm::Constant *CGObjCGNU::GenerateClassStructure(
   Elements.push_back(MakeConstantString(Name, ".class_name"));
   Elements.push_back(Zero);
   Elements.push_back(llvm::ConstantInt::get(LongTy, info));
-  Elements.push_back(InstanceSize);
+  if (isMeta) {
+    llvm::TargetData td(&TheModule);
+    Elements.push_back(llvm::ConstantInt::get(LongTy,
+                     td.getTypeSizeInBits(ClassTy)/8));
+  } else
+    Elements.push_back(InstanceSize);
   Elements.push_back(IVars);
   Elements.push_back(Methods);
   Elements.push_back(NULLPtr);