@@ -1343,7 +1343,8 @@ namespace {
13431343 // };
13441344
13451345 assert (fields.getNextOffsetFromGlobal () == size);
1346- return buildGlobalVariable (fields, " _CATEGORY_" , /* const*/ true );
1346+ return buildGlobalVariable (fields, " _CATEGORY_" , /* const*/ true ,
1347+ llvm::GlobalVariable::InternalLinkage);
13471348 }
13481349
13491350 llvm::Constant *emitProtocol () {
@@ -1503,7 +1504,8 @@ namespace {
15031504 // statically. Otherwise, the ObjC runtime may slide the InstanceSize
15041505 // based on changing base class layout.
15051506 return buildGlobalVariable (fields, dataSuffix,
1506- /* const*/ forMeta || FieldLayout->isFixedSize ());
1507+ /* const*/ forMeta || FieldLayout->isFixedSize (),
1508+ llvm::GlobalVariable::InternalLinkage);
15071509 }
15081510
15091511 private:
@@ -1768,12 +1770,8 @@ namespace {
17681770 return null ();
17691771 }
17701772
1771- auto *gv_as_const = buildGlobalVariable (array, " _PROTOCOL_METHOD_TYPES_" ,
1772- /* const*/ true ,
1773- /* likage*/ llvm::GlobalVariable::WeakAnyLinkage);
1774- llvm::GlobalValue *gv = (llvm::GlobalValue *)gv_as_const;
1775- gv->setVisibility (llvm::GlobalValue::HiddenVisibility);
1776- return gv;
1773+ return buildGlobalVariable (array, " _PROTOCOL_METHOD_TYPES_" ,
1774+ /* const*/ true );
17771775 }
17781776
17791777 void buildExtMethodTypes (ConstantArrayBuilder &array,
@@ -2175,7 +2173,7 @@ namespace {
21752173 template <class B >
21762174 llvm::Constant *buildGlobalVariable (B &fields, StringRef nameBase, bool isConst,
21772175 llvm::GlobalValue::LinkageTypes linkage =
2178- llvm::GlobalVariable::InternalLinkage ) {
2176+ llvm::GlobalVariable::WeakAnyLinkage ) {
21792177 llvm::SmallString<64 > nameBuffer;
21802178 auto var =
21812179 fields.finishAndCreateGlobal (Twine (nameBase)
@@ -2186,6 +2184,9 @@ namespace {
21862184 IGM.getPointerAlignment (),
21872185 /* constant*/ true ,
21882186 linkage);
2187+ if (linkage == llvm::GlobalVariable::WeakAnyLinkage) {
2188+ var->setVisibility (llvm::GlobalValue::HiddenVisibility);
2189+ }
21892190
21902191 switch (IGM.TargetInfo .OutputObjectFormat ) {
21912192 case llvm::Triple::MachO:
0 commit comments