xref: /llvm-project/clang/test/CodeGenCXX/cxx2b-deducing-this-cc.cpp (revision af4751738db89a142a8880c782d12d4201b222a8)
1 // RUN: %clang_cc1 -std=c++2b %s -emit-llvm -triple i386-windows-msvc -o - | FileCheck %s
2 
3 namespace CC {
4 
5 struct T {
6    static void f(T&);
7    void __cdecl g(this T&);
8    void __thiscall h(this T&);
9    void i(this T&);
10 };
11 
a()12 void a() {
13     T t;
14     T::f(t);
15 }
16 // CHECK: define dso_local void @"?a@CC@@YAXXZ"{{.*}}
17 // CHECK: call void @"?f@T@CC@@SAXAAU12@@Z"{{.*}}
18 
b()19 void b() {
20     T t;
21     t.g();
22 }
23 // CHECK: define dso_local void @"?b@CC@@YAXXZ"{{.*}}
24 // CHECK: call void @"?g@T@CC@@SAX_VAAU12@@Z"{{.*}}
25 
c()26 void c() {
27     T t;
28     t.h();
29 }
30 // CHECK: define dso_local void @"?c@CC@@YAXXZ"{{.*}}
31 // CHECK: call x86_thiscallcc void @"?h@T@CC@@SEX_VAAU12@@Z"{{.*}}
32 
d()33 void d() {
34     T t;
35     t.i();
36 }
37 // CHECK: define dso_local void @"?d@CC@@YAXXZ"{{.*}}
38 // CHECK: call void @"?i@T@CC@@SAX_VAAU12@@Z"{{.*}}
39 
40 }
41