r203141 - Revert "Use private linkage for remaining GlobalVariables with private names."
Rafael Espindola
rafael.espindola at gmail.com
Thu Mar 6 10:54:12 PST 2014
Author: rafael
Date: Thu Mar 6 12:54:12 2014
New Revision: 203141
URL: http://llvm.org/viewvc/llvm-project?rev=203141&view=rev
Log:
Revert "Use private linkage for remaining GlobalVariables with private names."
This reverts commit r203059.
Revert while we discuss what does it mean to be private and weak.
Modified:
cfe/trunk/lib/CodeGen/CGObjCMac.cpp
cfe/trunk/test/CodeGenObjC/forward-protocol-metadata-symbols.m
cfe/trunk/test/CodeGenObjC/hidden-visibility.m
cfe/trunk/test/CodeGenObjC/metadata-symbols-64.m
Modified: cfe/trunk/lib/CodeGen/CGObjCMac.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCMac.cpp?rev=203141&r1=203140&r2=203141&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGObjCMac.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGObjCMac.cpp Thu Mar 6 12:54:12 2014
@@ -5955,11 +5955,11 @@ llvm::Value *CGObjCNonFragileABIMac::Gen
PTGV = new llvm::GlobalVariable(
CGM.getModule(),
Init->getType(), false,
- llvm::GlobalValue::PrivateLinkage,
+ llvm::GlobalValue::WeakAnyLinkage,
Init,
ProtocolName);
- assertPrivateName(PTGV);
PTGV->setSection("__DATA, __objc_protorefs, coalesced, no_dead_strip");
+ PTGV->setVisibility(llvm::GlobalValue::HiddenVisibility);
CGM.AddUsedGlobal(PTGV);
return CGF.Builder.CreateLoad(PTGV);
}
@@ -6243,11 +6243,10 @@ llvm::Constant *CGObjCNonFragileABIMac::
// contents for protocols which were referenced but never defined.
Entry =
new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ProtocolnfABITy,
- false, llvm::GlobalValue::PrivateLinkage, 0,
+ false, llvm::GlobalValue::WeakAnyLinkage, 0,
"\01l_OBJC_PROTOCOL_$_" + PD->getName());
Entry->setSection("__DATA,__datacoal_nt,coalesced");
}
- assertPrivateName(Entry);
return Entry;
}
@@ -6359,11 +6358,12 @@ llvm::Constant *CGObjCNonFragileABIMac::
if (Entry) {
// Already created, update the initializer.
+ assert(Entry->getLinkage() == llvm::GlobalValue::WeakAnyLinkage);
Entry->setInitializer(Init);
} else {
Entry =
new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ProtocolnfABITy,
- false, llvm::GlobalValue::PrivateLinkage, Init,
+ false, llvm::GlobalValue::WeakAnyLinkage, Init,
"\01l_OBJC_PROTOCOL_$_" + PD->getName());
Entry->setAlignment(
CGM.getDataLayout().getABITypeAlignment(ObjCTypes.ProtocolnfABITy));
@@ -6371,19 +6371,19 @@ llvm::Constant *CGObjCNonFragileABIMac::
Protocols[PD->getIdentifier()] = Entry;
}
- assertPrivateName(Entry);
+ Entry->setVisibility(llvm::GlobalValue::HiddenVisibility);
CGM.AddUsedGlobal(Entry);
// Use this protocol meta-data to build protocol list table in section
// __DATA, __objc_protolist
llvm::GlobalVariable *PTGV =
new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ProtocolnfABIPtrTy,
- false, llvm::GlobalValue::PrivateLinkage, Entry,
+ false, llvm::GlobalValue::WeakAnyLinkage, Entry,
"\01l_OBJC_LABEL_PROTOCOL_$_" + PD->getName());
- assertPrivateName(PTGV);
PTGV->setAlignment(
CGM.getDataLayout().getABITypeAlignment(ObjCTypes.ProtocolnfABIPtrTy));
PTGV->setSection("__DATA, __objc_protolist, coalesced, no_dead_strip");
+ PTGV->setVisibility(llvm::GlobalValue::HiddenVisibility);
CGM.AddUsedGlobal(PTGV);
return Entry;
}
@@ -6592,14 +6592,14 @@ CGObjCNonFragileABIMac::EmitVTableMessag
messageRef = new llvm::GlobalVariable(CGM.getModule(),
init->getType(),
/*constant*/ false,
- llvm::GlobalValue::PrivateLinkage,
+ llvm::GlobalValue::WeakAnyLinkage,
init,
messageRefName);
+ messageRef->setVisibility(llvm::GlobalValue::HiddenVisibility);
messageRef->setAlignment(16);
messageRef->setSection("__DATA, __objc_msgrefs, coalesced");
}
- assertPrivateName(messageRef);
-
+
bool requiresnullCheck = false;
if (CGM.getLangOpts().ObjCAutoRefCount && method)
for (ObjCMethodDecl::param_const_iterator i = method->param_begin(),
Modified: cfe/trunk/test/CodeGenObjC/forward-protocol-metadata-symbols.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/forward-protocol-metadata-symbols.m?rev=203141&r1=203140&r2=203141&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenObjC/forward-protocol-metadata-symbols.m (original)
+++ cfe/trunk/test/CodeGenObjC/forward-protocol-metadata-symbols.m Thu Mar 6 12:54:12 2014
@@ -18,7 +18,7 @@ int main() {
return 0;
}
-// CHECK: @"\01l_OBJC_PROTOCOL_$_P0" = private global
+// CHECK: @"\01l_OBJC_PROTOCOL_$_P0" = weak hidden global
// CHECK: @"\01l_OBJC_CLASS_PROTOCOLS_$_A" = private global
-// CHECK: @"\01l_OBJC_LABEL_PROTOCOL_$_P0" = private global
-// CHECK: @"\01l_OBJC_PROTOCOL_REFERENCE_$_P0" = private global
+// CHECK: @"\01l_OBJC_LABEL_PROTOCOL_$_P0" = weak hidden global
+// CHECK: @"\01l_OBJC_PROTOCOL_REFERENCE_$_P0" = weak hidden global
Modified: cfe/trunk/test/CodeGenObjC/hidden-visibility.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/hidden-visibility.m?rev=203141&r1=203140&r2=203141&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenObjC/hidden-visibility.m (original)
+++ cfe/trunk/test/CodeGenObjC/hidden-visibility.m Thu Mar 6 12:54:12 2014
@@ -2,7 +2,7 @@
// CHECK: @"OBJC_IVAR_$_I.P" = hidden
// CHECK: @"OBJC_CLASS_$_I" = hidden
// CHECK: @"OBJC_METACLASS_$_I" = hidden
-// CHECK: @"\01l_OBJC_PROTOCOL_$_Prot0" = private global
+// CHECK: @"\01l_OBJC_PROTOCOL_$_Prot0" = weak hidden
@interface I {
int P;
Modified: cfe/trunk/test/CodeGenObjC/metadata-symbols-64.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/metadata-symbols-64.m?rev=203141&r1=203140&r2=203141&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenObjC/metadata-symbols-64.m (original)
+++ cfe/trunk/test/CodeGenObjC/metadata-symbols-64.m Thu Mar 6 12:54:12 2014
@@ -11,8 +11,8 @@
// CHECK: @"\01l_OBJC_$_CLASS_METHODS_A" = private global {{.*}} section "__DATA, __objc_const", align 8
// CHECK: @"\01l_OBJC_$_PROTOCOL_INSTANCE_METHODS_P" = private global {{.*}} section "__DATA, __objc_const", align 8
// CHECK: @"\01l_OBJC_$_PROTOCOL_CLASS_METHODS_P" = private global {{.*}} section "__DATA, __objc_const", align 8
-// CHECK: @"\01l_OBJC_PROTOCOL_$_P" = private global {{.*}} section "__DATA,__datacoal_nt,coalesced", align 8
-// CHECK: @"\01l_OBJC_LABEL_PROTOCOL_$_P" = private global {{.*}} section "__DATA, __objc_protolist, coalesced, no_dead_strip", align 8
+// CHECK: @"\01l_OBJC_PROTOCOL_$_P" = weak hidden global {{.*}} section "__DATA,__datacoal_nt,coalesced", align 8
+// CHECK: @"\01l_OBJC_LABEL_PROTOCOL_$_P" = weak hidden global {{.*}} section "__DATA, __objc_protolist, coalesced, no_dead_strip", align 8
// CHECK: @"\01l_OBJC_CLASS_PROTOCOLS_$_A" = private global {{.*}} section "__DATA, __objc_const", align 8
// CHECK: @"\01l_OBJC_METACLASS_RO_$_A" = private global {{.*}} section "__DATA, __objc_const", align 8
// CHECK: @"\01l_OBJC_$_INSTANCE_METHODS_A" = private global {{.*}} section "__DATA, __objc_const", align 8
@@ -28,7 +28,7 @@
// CHECK: @"\01L_OBJC_CLASSLIST_SUP_REFS_$_{{[0-9]*}}" = private global {{.*}} section "__DATA, __objc_superrefs, regular, no_dead_strip", align 8
// CHECK: @"OBJC_CLASS_$_B" = external global
// CHECK: @"\01L_OBJC_CLASSLIST_REFERENCES_$_{{[0-9]*}}" = private global {{.*}} section "__DATA, __objc_classrefs, regular, no_dead_strip", align 8
-// CHECK: @"\01l_objc_msgSend_fixup_alloc" = private global {{.*}} section "__DATA, __objc_msgrefs, coalesced", align 16
+// CHECK: @"\01l_objc_msgSend_fixup_alloc" = weak hidden global {{.*}} section "__DATA, __objc_msgrefs, coalesced", align 16
// CHECK: @"\01L_OBJC_LABEL_CLASS_$" = private global {{.*}} section "__DATA, __objc_classlist, regular, no_dead_strip", align 8
// CHECK: @"\01L_OBJC_LABEL_CATEGORY_$" = private global {{.*}} section "__DATA, __objc_catlist, regular, no_dead_strip", align 8
// CHECK: @objc_msgSend_fpret(
More information about the cfe-commits
mailing list