diff options
-rw-r--r-- | lib/CodeGen/CGObjCMac.cpp | 25 | ||||
-rw-r--r-- | test/CodeGenObjC/metadata_symbols.m | 1 |
2 files changed, 11 insertions, 15 deletions
diff --git a/lib/CodeGen/CGObjCMac.cpp b/lib/CodeGen/CGObjCMac.cpp index a0a8524fa5..dd55e655ce 100644 --- a/lib/CodeGen/CGObjCMac.cpp +++ b/lib/CodeGen/CGObjCMac.cpp @@ -2534,7 +2534,7 @@ llvm::Constant *CGObjCCommonMac::GetClassName(IdentifierInfo *Ident) { Entry = CreateMetadataVar("\01L_OBJC_CLASS_NAME_", llvm::ConstantArray::get(Ident->getName()), "__TEXT,__cstring,cstring_literals", - 0, true); + 1, true); return getConstantGEP(Entry, 0, 0); } @@ -2939,7 +2939,7 @@ llvm::Constant *CGObjCCommonMac::BuildIvarLayout( llvm::GlobalVariable * Entry = CreateMetadataVar("\01L_OBJC_CLASS_NAME_", llvm::ConstantArray::get(BitMap.c_str()), "__TEXT,__cstring,cstring_literals", - 0, true); + 1, true); // FIXME. Need a commomand-line option for this eventually. if (ForStrongLayout) printf("\nstrong ivar layout: "); @@ -2964,7 +2964,7 @@ llvm::Constant *CGObjCCommonMac::GetMethodVarName(Selector Sel) { Entry = CreateMetadataVar("\01L_OBJC_METH_VAR_NAME_", llvm::ConstantArray::get(Sel.getAsString()), "__TEXT,__cstring,cstring_literals", - 0, true); + 1, true); return getConstantGEP(Entry, 0, 0); } @@ -2989,7 +2989,7 @@ llvm::Constant *CGObjCCommonMac::GetMethodVarType(FieldDecl *Field) { Entry = CreateMetadataVar("\01L_OBJC_METH_VAR_TYPE_", llvm::ConstantArray::get(TypeStr), "__TEXT,__cstring,cstring_literals", - 0, true); + 1, true); return getConstantGEP(Entry, 0, 0); } @@ -3001,16 +3001,11 @@ llvm::Constant *CGObjCCommonMac::GetMethodVarType(const ObjCMethodDecl *D) { llvm::GlobalVariable *&Entry = MethodVarTypes[TypeStr]; - if (!Entry) { - llvm::Constant *C = llvm::ConstantArray::get(TypeStr); - Entry = - new llvm::GlobalVariable(C->getType(), false, - llvm::GlobalValue::InternalLinkage, - C, "\01L_OBJC_METH_VAR_TYPE_", - &CGM.getModule()); - Entry->setSection("__TEXT,__cstring,cstring_literals"); - UsedGlobals.push_back(Entry); - } + if (!Entry) + Entry = CreateMetadataVar("\01L_OBJC_METH_VAR_TYPE_", + llvm::ConstantArray::get(TypeStr), + "__TEXT,__cstring,cstring_literals", + 1, true); return getConstantGEP(Entry, 0, 0); } @@ -3023,7 +3018,7 @@ llvm::Constant *CGObjCCommonMac::GetPropertyName(IdentifierInfo *Ident) { Entry = CreateMetadataVar("\01L_OBJC_PROP_NAME_ATTR_", llvm::ConstantArray::get(Ident->getName()), "__TEXT,__cstring,cstring_literals", - 0, true); + 1, true); return getConstantGEP(Entry, 0, 0); } diff --git a/test/CodeGenObjC/metadata_symbols.m b/test/CodeGenObjC/metadata_symbols.m index 0edd9e899f..55dc5a38f5 100644 --- a/test/CodeGenObjC/metadata_symbols.m +++ b/test/CodeGenObjC/metadata_symbols.m @@ -6,6 +6,7 @@ // RUN: grep '@"OBJC_EHTYPE_$_EH2" = external global' %t && // RUN: grep '@"OBJC_EHTYPE_$_EH3" = global .*section "__DATA,__objc_const", align 8' %t && // RUN: grep '@"OBJC_EHTYPE_$_EH3"' %t | count 3 && +// RUN: grep '@"\\01L_OBJC_CLASS_NAME_" =.*section "__TEXT,__cstring,cstring_literals", align 1' %t | count 1 && // RUN: grep -F 'define internal void @"\01-[A im0]"' %t && // FIXME: Should include category name. // RUN: grep -F 'define internal void @"\01-[A im1]"' %t && |