|
4 | 4 | // RUN: %clang_cc1 -emit-llvm %std_cxx11-14 -dwarf-version=5 -triple x86_64 %s -O0 -disable-llvm-passes -debug-info-kind=standalone -o - | FileCheck %s --check-prefixes=CHECK,PRE17
|
5 | 5 | // RUN: %clang_cc1 -emit-llvm %std_cxx17- -dwarf-version=5 -triple x86_64 %s -O0 -disable-llvm-passes -debug-info-kind=standalone -o - | FileCheck %s --check-prefixes=CHECK,CXX17
|
6 | 6 | // RUN: %clang_cc1 -emit-llvm %std_cxx17- -dwarf-version=4 -triple x86_64 %s -O0 -disable-llvm-passes -debug-info-kind=standalone -o - | FileCheck %s --check-prefixes=CHECK,CXX17
|
| 7 | +// RUN: %clang_cc1 -emit-llvm %std_cxx20- -dwarf-version=5 -DCXX20=1 -triple x86_64 %s -O0 -disable-llvm-passes -debug-info-kind=standalone -o - | FileCheck %s --check-prefix=CHECK-CXX20 |
7 | 8 |
|
8 | 9 | // CHECK: DILocalVariable(name: "f1", {{.*}}, type: ![[TEMPLATE_TYPE:[0-9]+]]
|
9 | 10 | // CHECK: [[TEMPLATE_TYPE]] = {{.*}}!DICompositeType({{.*}}, templateParams: ![[F1_TYPE:[0-9]+]]
|
@@ -50,6 +51,29 @@ template <template <typename T> class CT = bar>
|
50 | 51 | class baz {
|
51 | 52 | };
|
52 | 53 |
|
| 54 | +#ifdef CXX20 |
| 55 | +struct non_empty { int mem; int mem2; } ne; |
| 56 | + |
| 57 | +template<float f = -1.5f, double d = 5.2, int * p = &ne.mem2> |
| 58 | +class nttp {}; |
| 59 | +nttp<> n1; |
| 60 | + |
| 61 | +// CHECK-CXX20: DIGlobalVariable(name: "n1", {{.*}}, type: ![[NTTP_TYPE:[0-9]+]] |
| 62 | +// CHECK-CXX20: [[NTTP_TYPE]] = {{.*}}!DICompositeType({{.*}}name: "nttp |
| 63 | +// CHECK-CXX20-SAME: templateParams: ![[NTTP_TEMPLATES:[0-9]+]] |
| 64 | +// CHECK-CXX20: [[NTTP_TEMPLATES]] = !{![[FIRST:[0-9]+]], ![[SECOND:[0-9]+]], ![[THIRD:[0-9]+]]} |
| 65 | +// CHECK-CXX20: [[FIRST]] = !DITemplateValueParameter(name: "f" |
| 66 | +// CHECK-CXX20-SAME: defaulted: true |
| 67 | +// CHECK-CXX20-SAME: value: float -1.500000e+00 |
| 68 | +// CHECK-CXX20: [[SECOND]] = !DITemplateValueParameter(name: "d" |
| 69 | +// CHECK-CXX20-SAME: defaulted: true |
| 70 | +// CHECK-CXX20-SAME: value: double 5.200000e+00 |
| 71 | +// CHECK-CXX20: [[THIRD]] = !DITemplateValueParameter(name: "p" |
| 72 | +// CHECK-CXX20-SAME: defaulted: true |
| 73 | +// CHECK-CXX20-SAME: value: ptr getelementptr (i8, ptr @ne, i64 4) |
| 74 | + |
| 75 | +#endif // CXX20 |
| 76 | + |
53 | 77 | int main() {
|
54 | 78 | foo<int, 6, false, 3, double> f1;
|
55 | 79 | foo<> f2;
|
|
0 commit comments