forked from OSchip/llvm-project
Objective-C IRGen. Fixes an assertion crash caused by inconsistent
linkage related to generation of OBJC_SELECTOR_REFERENCES symbol needed in generation of call to 'super' in a class method. // rdar://18150301 llvm-svn: 216676
This commit is contained in:
parent
33375375a4
commit
85b99da72a
|
@ -6794,8 +6794,7 @@ CGObjCNonFragileABIMac::GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF,
|
||||||
// If this is a class message the metaclass is passed as the target.
|
// If this is a class message the metaclass is passed as the target.
|
||||||
llvm::Value *Target;
|
llvm::Value *Target;
|
||||||
if (IsClassMessage)
|
if (IsClassMessage)
|
||||||
Target = EmitMetaClassRef(CGF, Class,
|
Target = EmitMetaClassRef(CGF, Class, Class->isWeakImported());
|
||||||
(isCategoryImpl && Class->isWeakImported()));
|
|
||||||
else
|
else
|
||||||
Target = EmitSuperClassRef(CGF, Class);
|
Target = EmitSuperClassRef(CGF, Class);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
// RUN: %clang_cc1 -triple x86_64-apple-ios6.0.0 -emit-llvm -o - %s | FileCheck %s
|
||||||
|
// rdar://18150301
|
||||||
|
|
||||||
|
@interface Query
|
||||||
|
+ (void)_configureCI;
|
||||||
|
@end
|
||||||
|
|
||||||
|
__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=7.0)))
|
||||||
|
@interface ObserverQuery : Query @end
|
||||||
|
|
||||||
|
@implementation ObserverQuery
|
||||||
|
+ (void)_configureCI {
|
||||||
|
[super _configureCI];
|
||||||
|
}
|
||||||
|
@end
|
||||||
|
|
||||||
|
// CHECK: @"OBJC_METACLASS_$_ObserverQuery" = global %struct._class_t
|
||||||
|
// CHECK: @"\01L_OBJC_SELECTOR_REFERENCES_" = private externally_initialized global
|
Loading…
Reference in New Issue