r216676 - Objective-C IRGen. Fixes an assertion crash caused by inconsistent
Fariborz Jahanian
fjahanian at apple.com
Thu Aug 28 10:05:17 PDT 2014
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
+
+ at interface Query
++ (void)_configureCI;
+ at end
+
+__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=7.0)))
+ at interface ObserverQuery : Query @end
+
+ at implementation ObserverQuery
++ (void)_configureCI {
+ [super _configureCI];
+}
+ at end
+
+// CHECK: @"OBJC_METACLASS_$_ObserverQuery" = global %struct._class_t
+// CHECK: @"\01L_OBJC_SELECTOR_REFERENCES_" = private externally_initialized global
More information about the cfe-commits
mailing list