1// RUN: %clang -emit-llvm -g -S %s -o - | FileCheck %s 2 3//CHECK: TC<int> 4//CHECK: DW_TAG_template_type_parameter 5 6template<typename T> 7class TC { 8public: 9 TC(const TC &) {} 10 TC() {} 11}; 12 13TC<int> tci; 14 15//CHECK: TU<2> 16//CHECK: DW_TAG_template_value_parameter 17template<unsigned > 18class TU { 19 int b; 20}; 21 22TU<2> u2; 23 24// PR9600 25template<typename T> class vector {}; 26class Foo; 27typedef vector<Foo*> FooVector[3]; 28struct Test { 29 virtual void foo(FooVector *); 30}; 31static Test test; 32 33// PR9608 34template <int i> struct TheTemplate { 35 struct Empty2 {}; 36 typedef const Empty2 DependentType[i]; 37 TheTemplate() {} 38}; 39 40class TheTemplateTest : public TheTemplate<42> { 41 TheTemplateTest(); 42 void method(const TheTemplate<42>::DependentType *) {} 43}; 44 45TheTemplateTest::TheTemplateTest() : TheTemplate<42>() {} 46 47