xref: /llvm-project/clang/test/CodeGenCXX/debug-info-ptr-to-member-function.cpp (revision e76bda544bbf52d9ff3b55e6018b494a1e6bbc00)
13459ce2eSDouglas Katzman // RUN: %clang_cc1 %s -triple x86_64-apple-darwin -debug-info-kind=limited -emit-llvm -o - | FileCheck -check-prefix=CHECK -check-prefix=DARWIN-X64 %s
23459ce2eSDouglas Katzman // RUN: %clang_cc1 %s -triple x86_64-pc-win32     -debug-info-kind=limited -emit-llvm -o - | FileCheck -check-prefix=CHECK -check-prefix=WIN32-X64 %s
30772dbd1SAdrian Prantl 
40772dbd1SAdrian Prantl struct T {
50772dbd1SAdrian Prantl   int method();
60772dbd1SAdrian Prantl };
70772dbd1SAdrian Prantl 
foo(int (T::* method)())80772dbd1SAdrian Prantl void foo(int (T::*method)()) {}
90772dbd1SAdrian Prantl 
1034568bc6SDavid Majnemer struct Incomplete;
1134568bc6SDavid Majnemer 
1234568bc6SDavid Majnemer int (Incomplete::**bar)();
13*e76bda54SAdrian Prantl // A pointer to a member function is a pair of function- and this-pointer.
1434568bc6SDavid Majnemer // CHECK: !DIDerivedType(tag: DW_TAG_ptr_to_member_type,
1534568bc6SDavid Majnemer // DARWIN-X64-SAME:           size: 128
1634568bc6SDavid Majnemer // WIN32-X64-NOT:             size:
1734568bc6SDavid Majnemer // CHECK-SAME:                extraData: {{.*}})
18*e76bda54SAdrian Prantl 
19*e76bda54SAdrian Prantl // CHECK: !DIDerivedType(tag: DW_TAG_ptr_to_member_type,
20*e76bda54SAdrian Prantl // DARWIN-X64-SAME:      size: 128
21*e76bda54SAdrian Prantl // WIN32-X64-SAME:       size: 64
22