[clang-tidy] add regression test to performance-unnecessary-value-param

This test shows the problem in https://bugs.llvm.org/show_bug.cgi?id=33734

Differential Revision: https://reviews.llvm.org/D35225

llvm-svn: 307810
This commit is contained in:
Chih-Hung Hsieh 2017-07-12 16:27:00 +00:00
parent 322e8c2bc1
commit 98a6b3ea87
3 changed files with 48 additions and 0 deletions

View File

@ -0,0 +1,15 @@
// struct ABC is expensive to copy and should be
// passed as a const referece.
struct ABC {
ABC(const ABC&);
int get(int) const;
};
int f1(int n, const ABC& v1, const ABC& v2); // line 9
int f1(int n, ABC v1); // line 11
int f2( int n, const ABC& v2); // line 15

View File

@ -0,0 +1,15 @@
// struct ABC is expensive to copy and should be
// passed as a const referece.
struct ABC {
ABC(const ABC&);
int get(int) const;
};
int f1(int n, ABC v1, ABC v2); // line 9
int f1(int n, ABC v1); // line 11
int f2( int n, ABC v2); // line 15

View File

@ -0,0 +1,18 @@
// RUN: cp %S/Inputs/performance-unnecessary-value-param/header.h %T/header.h
// RUN: %check_clang_tidy %s performance-unnecessary-value-param %t -- -- -std=c++11 -I %T
// RUN: diff %T/header.h %S/Inputs/performance-unnecessary-value-param/header-fixed.h
#include "header.h"
int f1(int n, ABC v1, ABC v2) {
// CHECK-MESSAGES: [[@LINE-1]]:19: warning: the parameter 'v1' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
// CHECK-MESSAGES: [[@LINE-2]]:27: warning: the parameter 'v2' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
// CHECK-FIXES: int f1(int n, const ABC& v1, const ABC& v2) {
return v1.get(n) + v2.get(n);
}
int f2(int n, ABC v2) {
// CHECK-MESSAGES: [[@LINE-1]]:19: warning: the parameter 'v2' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
// CHECK-FIXES: int f2(int n, const ABC& v2) {
}