forked from OSchip/llvm-project
b4ab4b6317
Summary: The following Objective-C code currently incorrectly triggers clang-tidy's performance-unnecessary-value-param check: ``` % cat /tmp/performance-unnecessary-value-param-arc.m void foo(id object) { } clang-tidy /tmp/performance-unnecessary-value-param-arc.m -checks=-\*,performance-unnecessary-value-param -- -xobjective-c -fobjc-abi-version=2 -fobjc-arc 1 warning generated. /src/llvm/tools/clang/tools/extra/test/clang-tidy/performance-unnecessary-value-param-arc.m:10:13: warning: the parameter 'object' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param] void foo(id object) { } ~~ ^ const & ``` This is wrong for a few reasons: 1) Objective-C doesn't have references, so `const &` is not going to help 2) ARC heavily optimizes the "expensive" copy which triggers the warning This fixes the issue by disabling the warning for non-C++, as well as disabling it for objects under ARC memory management for Objective-C++. Fixes https://bugs.llvm.org/show_bug.cgi?id=32075 Test Plan: New tests added. Ran tests with `make -j12 check-clang-tools`. Reviewers: alexfh, hokein Reviewed By: hokein Subscribers: stephanemoore, klimek, xazax.hun, cfe-commits, Wizard Differential Revision: https://reviews.llvm.org/D42812 llvm-svn: 324097 |
||
---|---|---|
.. | ||
android | ||
boost | ||
bugprone | ||
cert | ||
cppcoreguidelines | ||
fuchsia | ||
hicpp | ||
llvm | ||
misc | ||
modernize | ||
mpi | ||
objc | ||
performance | ||
plugin | ||
readability | ||
tool | ||
utils | ||
CMakeLists.txt | ||
ClangTidy.cpp | ||
ClangTidy.h | ||
ClangTidyDiagnosticConsumer.cpp | ||
ClangTidyDiagnosticConsumer.h | ||
ClangTidyModule.cpp | ||
ClangTidyModule.h | ||
ClangTidyModuleRegistry.h | ||
ClangTidyOptions.cpp | ||
ClangTidyOptions.h | ||
add_new_check.py | ||
rename_check.py |