Home | History | Annotate | Download | only in Demangle
      1 ; These tests are based on clang/test/CodeGenCXX/mangle-ms-template-callback.cpp
      2 
      3 ; RUN: llvm-undname < %s | FileCheck %s
      4 
      5 ; CHECK-NOT: Invalid mangled name
      6 
      7 ?callback_void@@3V?$C@$$A6AXXZ@@A
      8 ; CHECK: class C<void __cdecl(void)> callback_void
      9 
     10 ?callback_void_volatile@@3V?$C@$$A6AXXZ@@C
     11 ; CHECK: class C<void __cdecl(void)> volatile callback_void_volatile
     12 
     13 ?callback_int@@3V?$C@$$A6AHXZ@@A
     14 ; CHECK: C<int __cdecl(void)> callback_int
     15 
     16 ?callback_Type@@3V?$C@$$A6A?AVType@@XZ@@A
     17 ; CHECK: C<class Type __cdecl(void)> callback_Type
     18 
     19 ?callback_void_int@@3V?$C@$$A6AXH@Z@@A
     20 ; CHECK: C<void __cdecl(int)> callback_void_int
     21 
     22 ?callback_int_int@@3V?$C@$$A6AHH@Z@@A
     23 ; CHECK: C<int __cdecl(int)> callback_int_int
     24 
     25 ?callback_void_Type@@3V?$C@$$A6AXVType@@@Z@@A
     26 ; CHECK: C<void __cdecl(class Type)> callback_void_Type
     27 
     28 ?foo@@YAXV?$C@$$A6AXXZ@@@Z
     29 ; CHECK: void __cdecl foo(class C<void __cdecl(void)>)
     30 
     31 ?function@@YAXV?$C@$$A6AXXZ@@@Z
     32 ; CHECK: void __cdecl function(class C<void __cdecl(void)>)
     33 
     34 ?function_pointer@@YAXV?$C@P6AXXZ@@@Z
     35 ; CHECK: void __cdecl function_pointer(class C<void (__cdecl *)(void)>)
     36 
     37 ?member_pointer@@YAXV?$C@P8Z@@AEXXZ@@@Z
     38 ; CHECK: void __cdecl member_pointer(class C<void (__thiscall Z::*)(void)>)
     39 
     40 ??$bar@P6AHH@Z@@YAXP6AHH@Z@Z
     41 ; CHECK: void __cdecl bar<int (__cdecl *)(int)>(int (__cdecl *)(int))
     42 
     43 ??$WrapFnPtr@$1?VoidFn@@YAXXZ@@YAXXZ
     44 ; CHECK: void __cdecl WrapFnPtr<&void __cdecl VoidFn(void)>(void)
     45 
     46 ??$WrapFnRef@$1?VoidFn@@YAXXZ@@YAXXZ
     47 ; CHECK: void __cdecl WrapFnRef<&void __cdecl VoidFn(void)>(void)
     48 
     49 ??$WrapFnPtr@$1?VoidStaticMethod@Thing@@SAXXZ@@YAXXZ
     50 ; CHECK: void __cdecl WrapFnPtr<&static void __cdecl Thing::VoidStaticMethod(void)>(void)
     51 
     52 ??$WrapFnRef@$1?VoidStaticMethod@Thing@@SAXXZ@@YAXXZ
     53 ; CHECK: void __cdecl WrapFnRef<&static void __cdecl Thing::VoidStaticMethod(void)>(void)
     54