dblaikie created this revision. dblaikie added a reviewer: rsmith. dblaikie requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
Improve the application of D77598 <https://reviews.llvm.org/D77598> by passing the template parameter list, allowing integer suffixes to be omitted in more places, making for easier to read template names Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D110898 Files: clang/lib/AST/Decl.cpp clang/test/CodeGenCXX/debug-info-simple-template-names.cpp clang/test/SemaCXX/builtin-align-cxx.cpp clang/test/SemaCXX/matrix-type-builtins.cpp clang/test/SemaCXX/matrix-type-operators.cpp clang/test/SemaTemplate/address_space-dependent.cpp clang/test/SemaTemplate/delegating-constructors.cpp clang/test/SemaTemplate/matrix-type.cpp
Index: clang/test/SemaTemplate/matrix-type.cpp =================================================================== --- clang/test/SemaTemplate/matrix-type.cpp +++ clang/test/SemaTemplate/matrix-type.cpp @@ -17,7 +17,7 @@ void instantiate_template_3() { matrix_template_3<1, 10>(); - matrix_template_3<0, 10>(); // expected-note{{in instantiation of function template specialization 'matrix_template_3<0U, 10U>' requested here}} + matrix_template_3<0, 10>(); // expected-note{{in instantiation of function template specialization 'matrix_template_3<0, 10>' requested here}} } template <int Rows, unsigned Cols> @@ -27,7 +27,7 @@ void instantiate_template_4() { matrix_template_4<2, 10>(); - matrix_template_4<-3, 10>(); // expected-note{{in instantiation of function template specialization 'matrix_template_4<-3, 10U>' requested here}} + matrix_template_4<-3, 10>(); // expected-note{{in instantiation of function template specialization 'matrix_template_4<-3, 10>' requested here}} } template <class T, unsigned long R, unsigned long C> Index: clang/test/SemaTemplate/delegating-constructors.cpp =================================================================== --- clang/test/SemaTemplate/delegating-constructors.cpp +++ clang/test/SemaTemplate/delegating-constructors.cpp @@ -9,7 +9,7 @@ public: template <unsigned N> string(const char (&str)[N]) - : string(str) {} // expected-error{{constructor for 'string<6U>' creates a delegation cycle}} + : string(str) {} // expected-error{{constructor for 'string<6>' creates a delegation cycle}} }; void f() { Index: clang/test/SemaTemplate/address_space-dependent.cpp =================================================================== --- clang/test/SemaTemplate/address_space-dependent.cpp +++ clang/test/SemaTemplate/address_space-dependent.cpp @@ -102,7 +102,7 @@ HasASTemplateFields<1> HASTF; neg<-1>(); // expected-note {{in instantiation of function template specialization 'neg<-1>' requested here}} correct<0x7FFFEB>(); - tooBig<8388650>(); // expected-note {{in instantiation of function template specialization 'tooBig<8388650L>' requested here}} + tooBig<8388650>(); // expected-note {{in instantiation of function template specialization 'tooBig<8388650>' requested here}} __attribute__((address_space(1))) char *x; __attribute__((address_space(2))) char *y; Index: clang/test/SemaCXX/matrix-type-operators.cpp =================================================================== --- clang/test/SemaCXX/matrix-type-operators.cpp +++ clang/test/SemaCXX/matrix-type-operators.cpp @@ -28,13 +28,13 @@ Mat1.value = *((decltype(Mat1)::matrix_t *)Ptr1); unsigned v1 = add<unsigned, 2, 2, unsigned, 2, 2, unsigned, 2, 2>(Mat1, Mat1); // expected-error@-1 {{cannot initialize a variable of type 'unsigned int' with an rvalue of type 'typename MyMatrix<unsigned int, 2U, 2U>::matrix_t' (aka 'unsigned int __attribute__((matrix_type(2, 2)))')}} - // expected-note@-2 {{in instantiation of function template specialization 'add<unsigned int, 2U, 2U, unsigned int, 2U, 2U, unsigned int, 2U, 2U>' requested here}} + // expected-note@-2 {{in instantiation of function template specialization 'add<unsigned int, 2, 2, unsigned int, 2, 2, unsigned int, 2, 2>' requested here}} Mat1.value = add<unsigned, 2, 2, unsigned, 3, 3, unsigned, 2, 2>(Mat1, Mat2); - // expected-note@-1 {{in instantiation of function template specialization 'add<unsigned int, 2U, 2U, unsigned int, 3U, 3U, unsigned int, 2U, 2U>' requested here}} + // expected-note@-1 {{in instantiation of function template specialization 'add<unsigned int, 2, 2, unsigned int, 3, 3, unsigned int, 2, 2>' requested here}} Mat1.value = add<unsigned, 3, 3, float, 2, 2, unsigned, 2, 2>(Mat2, Mat3); - // expected-note@-1 {{in instantiation of function template specialization 'add<unsigned int, 3U, 3U, float, 2U, 2U, unsigned int, 2U, 2U>' requested here}} + // expected-note@-1 {{in instantiation of function template specialization 'add<unsigned int, 3, 3, float, 2, 2, unsigned int, 2, 2>' requested here}} } template <typename EltTy0, unsigned R0, unsigned C0, typename EltTy1, unsigned R1, unsigned C1, typename EltTy2, unsigned R2, unsigned C2> @@ -56,13 +56,13 @@ Mat1.value = *((decltype(Mat1)::matrix_t *)Ptr1); unsigned v1 = subtract<unsigned, 2, 2, unsigned, 2, 2, unsigned, 2, 2>(Mat1, Mat1); // expected-error@-1 {{cannot initialize a variable of type 'unsigned int' with an rvalue of type 'typename MyMatrix<unsigned int, 2U, 2U>::matrix_t' (aka 'unsigned int __attribute__((matrix_type(2, 2)))')}} - // expected-note@-2 {{in instantiation of function template specialization 'subtract<unsigned int, 2U, 2U, unsigned int, 2U, 2U, unsigned int, 2U, 2U>' requested here}} + // expected-note@-2 {{in instantiation of function template specialization 'subtract<unsigned int, 2, 2, unsigned int, 2, 2, unsigned int, 2, 2>' requested here}} Mat1.value = subtract<unsigned, 2, 2, unsigned, 3, 3, unsigned, 2, 2>(Mat1, Mat2); - // expected-note@-1 {{in instantiation of function template specialization 'subtract<unsigned int, 2U, 2U, unsigned int, 3U, 3U, unsigned int, 2U, 2U>' requested here}} + // expected-note@-1 {{in instantiation of function template specialization 'subtract<unsigned int, 2, 2, unsigned int, 3, 3, unsigned int, 2, 2>' requested here}} Mat1.value = subtract<unsigned, 3, 3, float, 2, 2, unsigned, 2, 2>(Mat2, Mat3); - // expected-note@-1 {{in instantiation of function template specialization 'subtract<unsigned int, 3U, 3U, float, 2U, 2U, unsigned int, 2U, 2U>' requested here}} + // expected-note@-1 {{in instantiation of function template specialization 'subtract<unsigned int, 3, 3, float, 2, 2, unsigned int, 2, 2>' requested here}} } template <typename EltTy0, unsigned R0, unsigned C0, typename EltTy1, unsigned R1, unsigned C1, typename EltTy2, unsigned R2, unsigned C2> @@ -89,15 +89,15 @@ MyMatrix<float, 2, 2> Mat3; Mat1.value = *((decltype(Mat1)::matrix_t *)Ptr1); unsigned v1 = multiply<unsigned, 2, 2, unsigned, 2, 2, unsigned, 2, 2>(Mat1, Mat1); - // expected-note@-1 {{in instantiation of function template specialization 'multiply<unsigned int, 2U, 2U, unsigned int, 2U, 2U, unsigned int, 2U, 2U>' requested here}} + // expected-note@-1 {{in instantiation of function template specialization 'multiply<unsigned int, 2, 2, unsigned int, 2, 2, unsigned int, 2, 2>' requested here}} // expected-error@-2 {{cannot initialize a variable of type 'unsigned int' with an rvalue of type 'typename MyMatrix<unsigned int, 2U, 2U>::matrix_t' (aka 'unsigned int __attribute__((matrix_type(2, 2)))')}} MyMatrix<unsigned, 3, 2> Mat4; Mat1.value = multiply<unsigned, 3, 2, unsigned, 3, 3, unsigned, 2, 2>(Mat4, Mat2); - // expected-note@-1 {{in instantiation of function template specialization 'multiply<unsigned int, 3U, 2U, unsigned int, 3U, 3U, unsigned int, 2U, 2U>' requested here}} + // expected-note@-1 {{in instantiation of function template specialization 'multiply<unsigned int, 3, 2, unsigned int, 3, 3, unsigned int, 2, 2>' requested here}} Mat1.value = multiply<float, 2, 2, unsigned, 2, 2, unsigned, 2, 2>(Mat3, Mat1); - // expected-note@-1 {{in instantiation of function template specialization 'multiply<float, 2U, 2U, unsigned int, 2U, 2U, unsigned int, 2U, 2U>' requested here}} + // expected-note@-1 {{in instantiation of function template specialization 'multiply<float, 2, 2, unsigned int, 2, 2, unsigned int, 2, 2>' requested here}} Mat4.value = Mat4.value * Mat1; // expected-error@-1 {{no viable conversion from 'MyMatrix<unsigned int, 2, 2>' to 'unsigned int'}} Index: clang/test/SemaCXX/matrix-type-builtins.cpp =================================================================== --- clang/test/SemaCXX/matrix-type-builtins.cpp +++ clang/test/SemaCXX/matrix-type-builtins.cpp @@ -30,14 +30,14 @@ MyMatrix<unsigned, 3, 3> Mat2; Mat1.value = *((decltype(Mat1)::matrix_t *)Ptr1); Mat1.value = transpose<unsigned, 2, 3, unsigned, 2, 3>(Mat1); - // expected-note@-1 {{in instantiation of function template specialization 'transpose<unsigned int, 2U, 3U, unsigned int, 2U, 3U>' requested here}} + // expected-note@-1 {{in instantiation of function template specialization 'transpose<unsigned int, 2, 3, unsigned int, 2, 3>' requested here}} Mat1.value = transpose<unsigned, 3, 3, unsigned, 2, 3>(Mat2); - // expected-note@-1 {{in instantiation of function template specialization 'transpose<unsigned int, 3U, 3U, unsigned int, 2U, 3U>' requested here}} + // expected-note@-1 {{in instantiation of function template specialization 'transpose<unsigned int, 3, 3, unsigned int, 2, 3>' requested here}} MyMatrix<float, 3, 3> Mat3; Mat3.value = transpose<unsigned, 3, 3, float, 3, 3>(Mat2); - // expected-note@-1 {{in instantiation of function template specialization 'transpose<unsigned int, 3U, 3U, float, 3U, 3U>' requested here}} + // expected-note@-1 {{in instantiation of function template specialization 'transpose<unsigned int, 3, 3, float, 3, 3>' requested here}} } template <typename EltTy0, unsigned R0, unsigned C0, typename EltTy1, unsigned R1, unsigned C1> @@ -55,13 +55,13 @@ void test_column_major_loads_template(unsigned *Ptr1, float *Ptr2) { MyMatrix<unsigned, 2, 3> Mat1; Mat1.value = column_major_load<unsigned, 2, 3, unsigned, 2, 3>(Mat1, Ptr1); - // expected-note@-1 {{in instantiation of function template specialization 'column_major_load<unsigned int, 2U, 3U, unsigned int, 2U, 3U>' requested here}} + // expected-note@-1 {{in instantiation of function template specialization 'column_major_load<unsigned int, 2, 3, unsigned int, 2, 3>' requested here}} column_major_load<unsigned, 2, 3, unsigned, 5, 5>(Mat1, Ptr1); - // expected-note@-1 {{in instantiation of function template specialization 'column_major_load<unsigned int, 2U, 3U, unsigned int, 5U, 5U>' requested here}} + // expected-note@-1 {{in instantiation of function template specialization 'column_major_load<unsigned int, 2, 3, unsigned int, 5, 5>' requested here}} MyMatrix<float, 2, 3> Mat2; Mat1.value = column_major_load<float, 2, 3, unsigned, 2, 3>(Mat2, Ptr2); - // expected-note@-1 {{in instantiation of function template specialization 'column_major_load<float, 2U, 3U, unsigned int, 2U, 3U>' requested here}} + // expected-note@-1 {{in instantiation of function template specialization 'column_major_load<float, 2, 3, unsigned int, 2, 3>' requested here}} } constexpr int constexpr1() { return 1; } @@ -116,10 +116,10 @@ void test_column_major_stores_template(MyMatrix<unsigned, 2, 3> &M1, unsigned *Ptr1, MyMatrix<float, 3, 4> &M2, float *Ptr2) { column_major_store(M1, Ptr2, 10); - // expected-note@-1 {{in instantiation of function template specialization 'column_major_store<unsigned int, 2U, 3U, float *>' requested here}} + // expected-note@-1 {{in instantiation of function template specialization 'column_major_store<unsigned int, 2, 3, float *>' requested here}} column_major_store<decltype(M2), float *, 1>(M2, Ptr2); - // expected-note@-1 {{in instantiation of function template specialization 'column_major_store<MyMatrix<float, 3, 4> &, float *, 1U>' requested here}} + // expected-note@-1 {{in instantiation of function template specialization 'column_major_store<MyMatrix<float, 3, 4> &, float *, 1>' requested here}} } template <typename EltTy0, unsigned R0, unsigned C0, typename EltTy1> @@ -139,13 +139,13 @@ void test_column_major_store_template(unsigned *Ptr1, float *Ptr2) { MyMatrix<unsigned, 2, 3> Mat1; column_major_store<unsigned, 2, 3, unsigned>(Mat1, Ptr1); - // expected-note@-1 {{in instantiation of function template specialization 'column_major_store<unsigned int, 2U, 3U, unsigned int>'}} + // expected-note@-1 {{in instantiation of function template specialization 'column_major_store<unsigned int, 2, 3, unsigned int>'}} column_major_store<unsigned, 2, 3, float>(Mat1, Ptr2); - // expected-note@-1 {{in instantiation of function template specialization 'column_major_store<unsigned int, 2U, 3U, float>'}} + // expected-note@-1 {{in instantiation of function template specialization 'column_major_store<unsigned int, 2, 3, float>'}} MyMatrix<float, 2, 3> Mat2; column_major_store<float, 2, 3, unsigned>(Mat2, Ptr1); - // expected-note@-1 {{in instantiation of function template specialization 'column_major_store<float, 2U, 3U, unsigned int>'}} + // expected-note@-1 {{in instantiation of function template specialization 'column_major_store<float, 2, 3, unsigned int>'}} } void test_column_major_store_constexpr(unsigned *Ptr, MyMatrix<unsigned, 3, 3> &M) { Index: clang/test/SemaCXX/builtin-align-cxx.cpp =================================================================== --- clang/test/SemaCXX/builtin-align-cxx.cpp +++ clang/test/SemaCXX/builtin-align-cxx.cpp @@ -31,10 +31,10 @@ void test() { test_templated_arguments<int, 32>(); // fine test_templated_arguments<struct fwddecl, 16>(); - // expected-note@-1{{in instantiation of function template specialization 'test_templated_arguments<fwddecl, 16L, 16L>'}} + // expected-note@-1{{in instantiation of function template specialization 'test_templated_arguments<fwddecl, 16, 16>'}} // expected-note@-2{{forward declaration of 'fwddecl'}} test_templated_arguments<int, 7>(); // invalid alignment value - // expected-note@-1{{in instantiation of function template specialization 'test_templated_arguments<int, 7L, 16L>'}} + // expected-note@-1{{in instantiation of function template specialization 'test_templated_arguments<int, 7, 16>'}} } template <typename T, long ArraySize> Index: clang/test/CodeGenCXX/debug-info-simple-template-names.cpp =================================================================== --- clang/test/CodeGenCXX/debug-info-simple-template-names.cpp +++ clang/test/CodeGenCXX/debug-info-simple-template-names.cpp @@ -78,7 +78,10 @@ // maybe it's just a question of doing APInt things to render such large // values. Punting on this for now. f2<__int128, ((__int128)9223372036854775807) * 2>(); - // CHECK: !DISubprogram(name: "f2<__int128, (__int128)18446744073709551614>", + // FIXME: This should have the cast in the non-type-template parameter value, + // for consistency with places where it's definitely needed, such as + // overloads. + // CHECK: !DISubprogram(name: "f2<__int128, 18446744073709551614>", t2().operator t1<int>(); // FIXME: This should be something like "operator t1<int><float>" Index: clang/lib/AST/Decl.cpp =================================================================== --- clang/lib/AST/Decl.cpp +++ clang/lib/AST/Decl.cpp @@ -2897,7 +2897,8 @@ NamedDecl::getNameForDiagnostic(OS, Policy, Qualified); const TemplateArgumentList *TemplateArgs = getTemplateSpecializationArgs(); if (TemplateArgs) - printTemplateArgumentList(OS, TemplateArgs->asArray(), Policy); + printTemplateArgumentList(OS, TemplateArgs->asArray(), Policy, + getPrimaryTemplate()->getTemplateParameters()); } bool FunctionDecl::isVariadic() const {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits