1 // RUN: %clang_cc1 -x c++ -std=c++23 -debug-info-kind=limited -emit-llvm < %s | FileCheck %s 2 3 // CHECK: !DISubprogram(name: "bar", 4 // CHECK-SAME: flags: DIFlagPrototyped 5 // CHECK: !DIDerivedType(tag: DW_TAG_pointer_type 6 // CHECK-SAME: flags: DIFlagArtificial | DIFlagObjectPointer 7 // 8 // CHECK: !DISubprogram(name: "explicit_this", 9 // flags: DIFlagPrototyped 10 // 11 // CHECK: !DIDerivedType(tag: DW_TAG_rvalue_reference_type 12 // CHECK-SAME: flags: DIFlagObjectPointer) 13 // 14 // CHECK: !DILocalVariable(name: "this", arg: 1 15 // CHECK-SAME: flags: DIFlagArtificial | DIFlagObjectPointer 16 // 17 // CHECK-NOT: DIFlagArtificial 18 // CHECK: !DILocalVariable(arg: 1, {{.*}}, flags: DIFlagObjectPointer) 19 20 struct Foo { 21 void bar() {} 22 void explicit_this(this Foo &&) {} 23 }; 24 25 void f() { 26 Foo{}.bar(); 27 Foo{}.explicit_this(); 28 } 29