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