// RUN: %clang -emit-llvm -g -S %s -o - | FileCheck %s //CHECK: TC<int> //CHECK: DW_TAG_template_type_parameter template<typename T> class TC { public: TC(const TC &) {} TC() {} }; TC<int> tci; //CHECK: TU<2> //CHECK: DW_TAG_template_value_parameter template<unsigned > class TU { int b; }; TU<2> u2; // PR9600 template<typename T> class vector {}; class Foo; typedef vector<Foo*> FooVector[3]; struct Test { virtual void foo(FooVector *); }; static Test test; // PR9608 template <int i> struct TheTemplate { struct Empty2 {}; typedef const Empty2 DependentType[i]; TheTemplate() {} }; class TheTemplateTest : public TheTemplate<42> { TheTemplateTest(); void method(const TheTemplate<42>::DependentType *) {} }; TheTemplateTest::TheTemplateTest() : TheTemplate<42>() {}