65 lines · cpp
1// RUN: %clang_cc1 -std=c++2b -emit-llvm -triple x86_64-linux -o - %s 2>/dev/null | FileCheck %s2 3struct S {4friend void test();5public:6 void a(this auto){}7 void b(this auto&){}8 void c(this S){}9 void c(this S, int){}10private:11 void d(this auto){}12 void e(this auto&){}13 void f(this S){}14 void f(this S, int){}15protected:16 void g(this auto){}17 void h(this auto&){}18 void i(this S){}19 void i(this S, int){}20};21 22 23void test() {24 S s;25 s.a();26 // CHECK: call void @_ZNH1S1aIS_EEvT_27 s.b();28 // CHECK: call void @_ZNH1S1bIS_EEvRT_29 s.c();30 // CHECK: call void @_ZNH1S1cES_31 s.c(0);32 // CHECK: call void @_ZNH1S1cES_i33 s.d();34 // CHECK: call void @_ZNH1S1dIS_EEvT_35 s.e();36 // CHECK: call void @_ZNH1S1eIS_EEvRT_37 s.f();38 // CHECK: call void @_ZNH1S1fES_39 s.f(0);40 // CHECK: call void @_ZNH1S1fES_i41 s.g();42 // CHECK: call void @_ZNH1S1gIS_EEvT_43 s.h();44 // CHECK: call void @_ZNH1S1hIS_EEvRT_45 s.i();46 // CHECK: call void @_ZNH1S1iES_47 s.i(0);48 // CHECK: call void @_ZNH1S1iES_i49}50 51struct StaticAndExplicit {52 static void f(StaticAndExplicit);53 void f(this StaticAndExplicit);54};55 56void test2() {57 StaticAndExplicit s;58 59 StaticAndExplicit::f(s);60 // CHECK: call void @_ZN17StaticAndExplicit1fES_61 62 s.f();63 // CHECK: call void @_ZNH17StaticAndExplicit1fES_64}65