summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenObjCXX
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2015-07-07 03:58:42 +0000
committerDouglas Gregor <dgregor@apple.com>2015-07-07 03:58:42 +0000
commitab209d83be5dadff4f17364a71f323b89e3c63f8 (patch)
tree5e97315685c9476095deef062e53e98e525d78e5 /clang/test/CodeGenObjCXX
parent10dc9d80cbb47675be0c6ea8481e12ec197e1637 (diff)
downloadbcm5719-llvm-ab209d83be5dadff4f17364a71f323b89e3c63f8.tar.gz
bcm5719-llvm-ab209d83be5dadff4f17364a71f323b89e3c63f8.zip
Implement the Objective-C __kindof type qualifier.
The __kindof type qualifier can be applied to Objective-C object (pointer) types to indicate id-like behavior, which includes implicit "downcasting" of __kindof types to subclasses and id-like message-send behavior. __kindof types provide better type bounds for substitutions into unspecified generic types, which preserves more type information. llvm-svn: 241548
Diffstat (limited to 'clang/test/CodeGenObjCXX')
-rw-r--r--clang/test/CodeGenObjCXX/mangle.mm15
1 files changed, 15 insertions, 0 deletions
diff --git a/clang/test/CodeGenObjCXX/mangle.mm b/clang/test/CodeGenObjCXX/mangle.mm
index 5b944caf1f4..bcb920ba1e9 100644
--- a/clang/test/CodeGenObjCXX/mangle.mm
+++ b/clang/test/CodeGenObjCXX/mangle.mm
@@ -98,3 +98,18 @@ template<> void X<A*>::f() {}
// CHECK-LABEL: define void @_ZN1XIP1AE1fEv
template<> void X<A<P>*>::f() {}
// CHECK-LABEL: define void @_ZN1XIPU11objcproto1P1AE1fEv
+
+// CHECK-LABEL: define void @_Z12kindof_test2PU8__kindof5Test2
+void kindof_test2(__kindof Test2 *t2) { }
+
+@interface Parameterized<T, U> : A
+@end
+
+// CHECK-LABEL: define void @_Z19parameterized_test1P13ParameterizedIP1AP4TestE
+void parameterized_test1(Parameterized<A *, Test *> *p) {}
+
+// CHECK-LABEL: define void @_Z19parameterized_test2PU8__kindof13ParameterizedIP1AP4TestE
+void parameterized_test2(__kindof Parameterized<A *, Test *> *p) {}
+
+// CHECK-LABEL: define void @_Z19parameterized_test3P13Parameterized
+void parameterized_test3(Parameterized *p) {}
OpenPOWER on IntegriCloud