summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenObjC/forward-protocol-metadata-symbols.m
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2014-03-03 21:53:57 +0000
committerFariborz Jahanian <fjahanian@apple.com>2014-03-03 21:53:57 +0000
commit1d5c1fad68e198e802c1fd7642876716ab1b2841 (patch)
treee8cd7c5c078cc63602585fdf4ff2f843cac09b15 /clang/test/CodeGenObjC/forward-protocol-metadata-symbols.m
parentf72eeaa4380cd990a1f0fb3135f6bfa409189861 (diff)
downloadbcm5719-llvm-1d5c1fad68e198e802c1fd7642876716ab1b2841.tar.gz
bcm5719-llvm-1d5c1fad68e198e802c1fd7642876716ab1b2841.zip
Objective-C. Fixes a regression when figuring out linkage
for metadata symbols for forward referenced protocols which are never defined. // rdar://16203115 llvm-svn: 202761
Diffstat (limited to 'clang/test/CodeGenObjC/forward-protocol-metadata-symbols.m')
-rw-r--r--clang/test/CodeGenObjC/forward-protocol-metadata-symbols.m24
1 files changed, 24 insertions, 0 deletions
diff --git a/clang/test/CodeGenObjC/forward-protocol-metadata-symbols.m b/clang/test/CodeGenObjC/forward-protocol-metadata-symbols.m
new file mode 100644
index 00000000000..c28adb3f8aa
--- /dev/null
+++ b/clang/test/CodeGenObjC/forward-protocol-metadata-symbols.m
@@ -0,0 +1,24 @@
+// RUN: %clang_cc1 -emit-llvm -x objective-c %s -o - | FileCheck %s
+// rdar://16203115
+
+@interface NSObject @end
+
+@protocol P0;
+
+@interface A : NSObject <P0>
++(Class) getClass;
+@end
+
+@implementation A
++(Class) getClass { return self; }
+@end
+
+int main() {
+ Protocol *P0 = @protocol(P0);
+ return 0;
+}
+
+// CHECK: @"\01l_OBJC_PROTOCOL_$_P0" = weak hidden global
+// CHECK: @"\01l_OBJC_CLASS_PROTOCOLS_$_A" = private global
+// CHECK: @"\01l_OBJC_LABEL_PROTOCOL_$_P0" = weak hidden global
+// CHECK: @"\01l_OBJC_PROTOCOL_REFERENCE_$_P0" = weak hidden global
OpenPOWER on IntegriCloud