// RUN: %clang -emit-llvm -g -S %s -o - | FileCheck %s //CHECK: TC //CHECK: DW_TAG_template_type_parameter template class TC { public: TC(const TC &) {} TC() {} }; TC tci; //CHECK: TU<2> //CHECK: DW_TAG_template_value_parameter template class TU { int b; }; TU<2> u2; // PR9600 template class vector {}; class Foo; typedef vector FooVector[3]; struct Test { virtual void foo(FooVector *); }; static Test test; // PR9608 template 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>() {}