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 461303884b8d..4dadc4f5531b 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>" | 
