================
@@ -0,0 +1,98 @@
+// RUN: %check_clang_tidy -std=c++14-or-later %s
performance-unnecessary-value-param %t
+
+struct ExpensiveToCopyType {
+ virtual ~ExpensiveToCopyType();
+};
+
+template <typename T> void templateWithNonTemplatizedParameter(const
ExpensiveToCopyType S, T V) {
+ // CHECK-MESSAGES: [[@LINE-1]]:90: warning: the const qualified parameter 'S'
+ // CHECK-MESSAGES: [[@LINE-2]]:95: warning: the parameter 'V'
+ // CHECK-FIXES: template <typename T> void
templateWithNonTemplatizedParameter(const ExpensiveToCopyType& S, const T& V) {
+}
+
+void instantiatedWithExpensiveValue() {
+ templateWithNonTemplatizedParameter(
+ ExpensiveToCopyType(), ExpensiveToCopyType());
+ templateWithNonTemplatizedParameter(ExpensiveToCopyType(), 5);
+}
+
+template <typename T> void
templateWithNonTemplatizedParameterCheapTemplate(const ExpensiveToCopyType S, T
V) {
+ // CHECK-MESSAGES: [[@LINE-1]]:103: warning: the const qualified parameter
'S'
+ // CHECK-FIXES: template <typename T> void
templateWithNonTemplatizedParameterCheapTemplate(const ExpensiveToCopyType& S,
T V) {
+}
+
+void instantiatedWithCheapValue() {
+ templateWithNonTemplatizedParameterCheapTemplate(ExpensiveToCopyType(), 5);
+}
+
+template <typename T> void nonInstantiatedTemplateWithConstValue(const T S) {}
+template <typename T> void nonInstantiatedTemplateWithNonConstValue(T S) {}
+
+template <typename T> void instantiatedTemplateSpecialization(T NoSpecS) {}
+template <> void instantiatedTemplateSpecialization<int>(int SpecSInt) {}
+template <>
+void instantiatedTemplateSpecialization<ExpensiveToCopyType>(
+ ExpensiveToCopyType SpecSExpensiveToCopy) {
+ // CHECK-MESSAGES: [[@LINE-1]]:25: warning: the parameter
'SpecSExpensiveToCopy'
+ // Updating template specialization would also require to update the main
+ // template and other specializations. Such specializations may be
+ // spreaded across across different translation units.
+ // For that reason we only issue a warning, but do not propose fixes.
----------------
PiotrZSL wrote:
move comment outside.
https://github.com/llvm/llvm-project/pull/97767
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits