Author: fjahanian
Date: Thu Aug 28 12:05:17 2014
New Revision: 216676
URL: http://llvm.org/viewvc/llvm-project?rev=216676&view=rev
Log:
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
Added:
cfe/trunk/test/CodeGenObjC/private-extern-selector-reference.m
Modified:
cfe/trunk/lib/CodeGen/CGObjCMac.cpp
Modified: cfe/trunk/lib/CodeGen/CGObjCMac.cpp
URL:
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCMac.cpp?rev=216676&r1=216675&r2=216676&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGObjCMac.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGObjCMac.cpp Thu Aug 28 12:05:17 2014
@@ -6794,8 +6794,7 @@ CGObjCNonFragileABIMac::GenerateMessageS
// If this is a class message the metaclass is passed as the target.
llvm::Value *Target;
if (IsClassMessage)
- Target = EmitMetaClassRef(CGF, Class,
- (isCategoryImpl && Class->isWeakImported()));
+ Target = EmitMetaClassRef(CGF, Class, Class->isWeakImported());
else
Target = EmitSuperClassRef(CGF, Class);
Added: cfe/trunk/test/CodeGenObjC/private-extern-selector-reference.m
URL:
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/private-extern-selector-reference.m?rev=216676&view=auto
==============================================================================
--- cfe/trunk/test/CodeGenObjC/private-extern-selector-reference.m (added)
+++ cfe/trunk/test/CodeGenObjC/private-extern-selector-reference.m Thu Aug 28
12:05:17 2014
@@ -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
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits