diff options
| -rw-r--r-- | clang/lib/CodeGen/CGObjCMac.cpp | 25 | ||||
| -rw-r--r-- | clang/test/CodeGenObjC/metadata_symbols.m | 1 | 
2 files changed, 11 insertions, 15 deletions
diff --git a/clang/lib/CodeGen/CGObjCMac.cpp b/clang/lib/CodeGen/CGObjCMac.cpp index a0a8524fa5a..dd55e655ce3 100644 --- a/clang/lib/CodeGen/CGObjCMac.cpp +++ b/clang/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/clang/test/CodeGenObjC/metadata_symbols.m b/clang/test/CodeGenObjC/metadata_symbols.m index 0edd9e899fe..55dc5a38f59 100644 --- a/clang/test/CodeGenObjC/metadata_symbols.m +++ b/clang/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 &&  | 

