diff options
Diffstat (limited to 'test/CodeGenCXX/debug-info-template-explicit-specialization.cpp')
-rw-r--r-- | test/CodeGenCXX/debug-info-template-explicit-specialization.cpp | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/test/CodeGenCXX/debug-info-template-explicit-specialization.cpp b/test/CodeGenCXX/debug-info-template-explicit-specialization.cpp index 4613038..4dadc4f 100644 --- a/test/CodeGenCXX/debug-info-template-explicit-specialization.cpp +++ b/test/CodeGenCXX/debug-info-template-explicit-specialization.cpp @@ -4,20 +4,22 @@ // type info at all. // RUN: %clang_cc1 -emit-llvm -triple %itanium_abi_triple -g %s -o - -gline-tables-only | FileCheck %s -check-prefix LINES-ONLY -// LINES-ONLY-NOT: DW_TAG_structure_type +// LINES-ONLY-NOT: !DICompositeType(tag: DW_TAG_structure_type template <typename T> struct a { }; extern template class a<int>; -// CHECK-NOT: ; [ DW_TAG_structure_type ] [a<int>] +// CHECK-NOT: DICompositeType(tag: DW_TAG_structure_type, name: "a<int>" template <typename T> struct b { }; extern template class b<int>; b<int> bi; -// CHECK: ; [ DW_TAG_structure_type ] [b<int>] {{.*}} [def] +// CHECK: DICompositeType(tag: DW_TAG_structure_type, name: "b<int>" +// CHECK-NOT: DIFlagFwdDecl +// CHECK-SAME: ){{$}} template <typename T> struct c { @@ -25,7 +27,8 @@ struct c { }; extern template class c<int>; c<int> ci; -// CHECK: ; [ DW_TAG_structure_type ] [c<int>] {{.*}} [decl] +// CHECK: DICompositeType(tag: DW_TAG_structure_type, name: "c<int>" +// CHECK-SAME: DIFlagFwdDecl template <typename T> struct d { @@ -33,7 +36,9 @@ struct d { }; extern template class d<int>; d<int> di; -// CHECK: ; [ DW_TAG_structure_type ] [d<int>] {{.*}} [def] +// CHECK: DICompositeType(tag: DW_TAG_structure_type, name: "d<int>" +// CHECK-NOT: DIFlagFwdDecl +// CHECK-SAME: ){{$}} template <typename T> struct e { @@ -47,7 +52,9 @@ e<int> ei; // There's no guarantee that the out of line definition will appear before the // explicit template instantiation definition, so conservatively emit the type // definition here. -// CHECK: ; [ DW_TAG_structure_type ] [e<int>] {{.*}} [def] +// CHECK: DICompositeType(tag: DW_TAG_structure_type, name: "e<int>" +// CHECK-NOT: DIFlagFwdDecl +// CHECK-SAME: ){{$}} template <typename T> struct f { @@ -58,7 +65,9 @@ template <typename T> void f<T>::g() { } f<int> fi; -// CHECK: ; [ DW_TAG_structure_type ] [f<int>] {{.*}} [def] +// CHECK: DICompositeType(tag: DW_TAG_structure_type, name: "f<int>" +// CHECK-NOT: DIFlagFwdDecl +// CHECK-SAME: ){{$}} template <typename T> struct g { @@ -68,13 +77,17 @@ template <> void g<int>::f(); extern template class g<int>; g<int> gi; -// CHECK: ; [ DW_TAG_structure_type ] [g<int>] {{.*}} [def] +// CHECK: DICompositeType(tag: DW_TAG_structure_type, name: "g<int>" +// CHECK-NOT: DIFlagFwdDecl +// CHECK-SAME: ){{$}} template <typename T> struct h { }; template class h<int>; -// CHECK: ; [ DW_TAG_structure_type ] [h<int>] {{.*}} [def] +// CHECK: DICompositeType(tag: DW_TAG_structure_type, name: "h<int>" +// CHECK-NOT: DIFlagFwdDecl +// CHECK-SAME: ){{$}} template <typename T> struct i { @@ -83,14 +96,16 @@ struct i { template<> void i<int>::f(); extern template class i<int>; i<int> ii; -// CHECK: ; [ DW_TAG_structure_type ] [i<int>] {{.*}} [def] +// CHECK: DICompositeType(tag: DW_TAG_structure_type, name: "i<int>" +// CHECK-NOT: DIFlagFwdDecl +// CHECK-SAME: ){{$}} template <typename T1, typename T2 = T1> struct j { }; extern template class j<int>; j<int> jj; -// CHECK: ; [ DW_TAG_structure_type ] [j<int, int>] +// CHECK: DICompositeType(tag: DW_TAG_structure_type, name: "j<int, int>" template <typename T> struct k { @@ -98,4 +113,4 @@ struct k { template <> struct k<int>; template struct k<int>; -// CHECK-NOT: ; [ DW_TAG_structure_type ] [k<int>] +// CHECK-NOT: !DICompositeType(tag: DW_TAG_structure_type, name: "k<int>" |