| // RUN: %clang_cc1 -std=c++2b %s -emit-llvm -triple i386-windows-msvc -o - | FileCheck %s |
| |
| namespace CC { |
| |
| struct T { |
| static void f(T&); |
| void __cdecl g(this T&); |
| void __thiscall h(this T&); |
| void i(this T&); |
| }; |
| |
| void a() { |
| T t; |
| T::f(t); |
| } |
| // CHECK: define dso_local void @"?a@CC@@YAXXZ"{{.*}} |
| // CHECK: call void @"?f@T@CC@@SAXAAU12@@Z"{{.*}} |
| |
| void b() { |
| T t; |
| t.g(); |
| } |
| // CHECK: define dso_local void @"?b@CC@@YAXXZ"{{.*}} |
| // CHECK: call void @"?g@T@CC@@SAX_VAAU12@@Z"{{.*}} |
| |
| void c() { |
| T t; |
| t.h(); |
| } |
| // CHECK: define dso_local void @"?c@CC@@YAXXZ"{{.*}} |
| // CHECK: call x86_thiscallcc void @"?h@T@CC@@SEX_VAAU12@@Z"{{.*}} |
| |
| void d() { |
| T t; |
| t.i(); |
| } |
| // CHECK: define dso_local void @"?d@CC@@YAXXZ"{{.*}} |
| // CHECK: call void @"?i@T@CC@@SAX_VAAU12@@Z"{{.*}} |
| |
| } |