forked from OSchip/llvm-project
parent
0e8364e912
commit
2461509cc1
|
@ -6236,7 +6236,7 @@ llvm::Constant *CGObjCNonFragileABIMac::GetOrEmitProtocolRef(
|
|||
// contents for protocols which were referenced but never defined.
|
||||
Entry =
|
||||
new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ProtocolnfABITy,
|
||||
false, llvm::GlobalValue::WeakAnyLinkage,
|
||||
false, llvm::GlobalValue::ExternalLinkage,
|
||||
nullptr,
|
||||
"\01l_OBJC_PROTOCOL_$_" + PD->getObjCRuntimeNameAsString());
|
||||
Entry->setSection("__DATA,__datacoal_nt,coalesced");
|
||||
|
@ -6347,8 +6347,8 @@ llvm::Constant *CGObjCNonFragileABIMac::GetOrEmitProtocol(
|
|||
Values);
|
||||
|
||||
if (Entry) {
|
||||
// Already created, update the initializer.
|
||||
assert(Entry->hasWeakAnyLinkage());
|
||||
// Already created, fix the linkage and update the initializer.
|
||||
Entry->setLinkage(llvm::GlobalValue::WeakAnyLinkage);
|
||||
Entry->setInitializer(Init);
|
||||
} else {
|
||||
Entry =
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
// RUN: %clang_cc1 -triple x86_64-apple-macosx -emit-llvm %s -o - | FileCheck %s
|
||||
|
||||
// Test that we produce a declaration for the protocol. It must be matched
|
||||
// by a definition in another TU, so external is the correct linkage
|
||||
// (not extern_weak).
|
||||
// CHECK: @"\01l_OBJC_PROTOCOL_$_p1" = external global
|
||||
|
||||
@interface NSObject
|
||||
@end
|
||||
|
||||
@protocol p1;
|
||||
|
||||
@interface I1 : NSObject <p1>
|
||||
@end
|
||||
|
||||
@implementation I1
|
||||
@end
|
Loading…
Reference in New Issue