]> granicus.if.org Git - clang/commitdiff
"This is a small fix for a bug where static object instances were being incorrectly...
authorChris Lattner <sabre@nondot.org>
Tue, 24 Jun 2008 17:01:28 +0000 (17:01 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 24 Jun 2008 17:01:28 +0000 (17:01 +0000)
Patch by David Chisnall!

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

lib/CodeGen/CGObjCGNU.cpp

index f2cfdcab82fb5359598065e5913c9a9baa872241..2f02b13ee6cfb4bebb2db3b578e16dece95a6636 100644 (file)
@@ -755,10 +755,12 @@ llvm::Function *CGObjCGNU::ModuleInitFunction() {
     llvm::StructType::get(PtrToInt8Ty, StaticsArrayTy, NULL);
   llvm::Constant *Statics = 
     MakeGlobal(StaticsListTy, Elements, ".objc_statics");
-  Statics = new
-    llvm::GlobalVariable(llvm::PointerType::getUnqual(StaticsListTy), false,
-        llvm::GlobalValue::InternalLinkage, Statics, ".objc_statics_ptr",
-        &TheModule);
+  llvm::ArrayType *StaticsListArrayTy =
+    llvm::ArrayType::get(llvm::PointerType::getUnqual(StaticsListTy), 2);
+  Elements.clear();
+  Elements.push_back(Statics);
+  Elements.push_back(llvm::ConstantPointerNull::get(llvm::PointerType::getUnqual(StaticsListTy)));
+  Statics = MakeGlobal(StaticsListArrayTy, Elements, ".objc_statics_ptr");
   Statics = llvm::ConstantExpr::getBitCast(Statics, PtrTy);
   // Array of classes, categories, and constant objects
   llvm::ArrayType *ClassListTy = llvm::ArrayType::get(PtrToInt8Ty,