Skip to content

Commit

Permalink
[clang-tidy] add regression test to performance-unnecessary-value-param
Browse files Browse the repository at this point in the history
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
  • Loading branch information
chih-hung committed Jul 12, 2017
1 parent 322e8c2 commit 98a6b3e
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 0 deletions.
@@ -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
@@ -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
@@ -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) {
}

0 comments on commit 98a6b3e

Please sign in to comment.