blob: 9bb75ffa3ba2c959669b21f574b01851cc68d973 [file] [log] [blame]
David Blaikief1e08ac2013-05-09 22:43:45 +00001// RUN: %clang_cc1 -emit-llvm -g %s -o - -std=c++11 | FileCheck %s
Devang Patelfa275df2011-02-02 21:38:49 +00002
David Blaikief1e08ac2013-05-09 22:43:45 +00003// CHECK: [[INT:![0-9]*]] = {{.*}} ; [ DW_TAG_base_type ] [int]
David Blaikie0cd9ede2013-05-09 21:32:04 +00004// CHECK: metadata [[TCI:![0-9]*]], i32 0, i32 1, %class.TC* @tci, null} ; [ DW_TAG_variable ] [tci]
David Blaikief1e08ac2013-05-09 22:43:45 +00005// CHECK: [[TC:![0-9]*]] = {{.*}}, metadata [[TCARGS:![0-9]*]]} ; [ DW_TAG_class_type ] [TC<int, 2, &glb, &foo::e, &foo::f, nullptr>]
David Blaikie0cd9ede2013-05-09 21:32:04 +00006// 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//
David Blaikief1e08ac2013-05-09 22:43:45 +000011// CHECK: [[TCARG1]] = {{.*}}metadata !"T", metadata [[INT]], {{.*}} ; [ DW_TAG_template_type_parameter ]
David Blaikie0cd9ede2013-05-09 21:32:04 +000012// CHECK: [[TCARG2]] = {{.*}}metadata !"", metadata [[UINT:![0-9]*]], i64 2, {{.*}} ; [ DW_TAG_template_value_parameter ]
13// CHECK: [[UINT]] = {{.*}} ; [ DW_TAG_base_type ] [unsigned int]
Devang Patelfa275df2011-02-02 21:38:49 +000014
David Blaikief1e08ac2013-05-09 22:43:45 +000015struct foo {
16 int e;
17 void f();
18};
19
20template<typename T, unsigned, int *x, int foo::*a, void (foo::*b)(), int *n>
Devang Patel700a1cb2010-07-20 20:24:18 +000021class TC {
Devang Patel700a1cb2010-07-20 20:24:18 +000022};
23
David Blaikief1e08ac2013-05-09 22:43:45 +000024int glb;
25
26TC<int, 2, &glb, &foo::e, &foo::f, nullptr> tci;