1 // RUN: %clang_cc1 -emit-llvm -g %s -o - -std=c++11 | FileCheck %s
2 
3 // CHECK: [[INT:![0-9]*]] = {{.*}} ; [ DW_TAG_base_type ] [int]
4 // CHECK: metadata [[TCI:![0-9]*]], i32 0, i32 1, %class.TC* @tci, null} ; [ DW_TAG_variable ] [tci]
5 // CHECK: [[TC:![0-9]*]] = {{.*}}, metadata [[TCARGS:![0-9]*]]} ; [ DW_TAG_class_type ] [TC<int, 2, &glb, &foo::e, &foo::f, nullptr>]
6 // CHECK: [[TCARGS]] = metadata !{metadata [[TCARG1:![0-9]*]], metadata [[TCARG2:![0-9]*]]}
7 //
8 // We seem to be missing file/line/col info on template value parameters -
9 // metadata supports it but it's not populated.
10 //
11 // CHECK: [[TCARG1]] = {{.*}}metadata !"T", metadata [[INT]], {{.*}} ; [ DW_TAG_template_type_parameter ]
12 // CHECK: [[TCARG2]] = {{.*}}metadata !"", metadata [[UINT:![0-9]*]], i64 2, {{.*}} ; [ DW_TAG_template_value_parameter ]
13 // CHECK: [[UINT]] = {{.*}} ; [ DW_TAG_base_type ] [unsigned int]
14 
15 struct foo {
16   int e;
17   void f();
18 };
19 
20 template<typename T, unsigned, int *x, int foo::*a, void (foo::*b)(), int *n>
21 class TC {
22 };
23 
24 int glb;
25 
26 TC<int, 2, &glb, &foo::e, &foo::f, nullptr> tci;
27