diff options
Diffstat (limited to 'test/CodeGenObjCXX/mangle.mm')
-rw-r--r-- | test/CodeGenObjCXX/mangle.mm | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/CodeGenObjCXX/mangle.mm b/test/CodeGenObjCXX/mangle.mm index 45a93a1..5b944ca 100644 --- a/test/CodeGenObjCXX/mangle.mm +++ b/test/CodeGenObjCXX/mangle.mm @@ -78,3 +78,23 @@ void test2(Test2 *t) { Test2Template<decltype(t.dimension)> t1; Test2Template<decltype(t->alt_axis)> t2; } + +@protocol P; +void overload1(A<P>*) {} +// CHECK-LABEL: define void @_Z9overload1PU11objcproto1P1A +void overload1(const A<P>*) {} +// CHECK-LABEL: define void @_Z9overload1PKU11objcproto1P1A +void overload1(A<P>**) {} +// CHECK-LABEL: define void @_Z9overload1PPU11objcproto1P1A +void overload1(A<P>*const*) {} +// CHECK-LABEL: define void @_Z9overload1PKPU11objcproto1P1A +void overload1(A<P>***) {} +// CHECK-LABEL: define void @_Z9overload1PPPU11objcproto1P1A +void overload1(void (f)(A<P>*)) {} +// CHECK-LABEL: define void @_Z9overload1PFvPU11objcproto1P1AE + +template<typename T> struct X { void f(); }; +template<> void X<A*>::f() {} +// CHECK-LABEL: define void @_ZN1XIP1AE1fEv +template<> void X<A<P>*>::f() {} +// CHECK-LABEL: define void @_ZN1XIPU11objcproto1P1AE1fEv |