[PATCH] D137205: [clang-tidy] Add performance-unnecessary-copy-on-last-use check
Fabian Keßler via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun Nov 13 02:30:27 PST 2022
Febbe added a comment.
In D137205#3920016 <https://reviews.llvm.org/D137205#3920016>, @firewave wrote:
> Getting this false positive:
>
> #include <string>
>
> extern std::string str()
> {
> std::string ret;
> return ret.empty() ? ret : ret.substr(1);
> }
>
>
>
> input.cpp:6:23: warning: Parameter 'ret' is copied on last use, consider moving it instead. [performance-unnecessary-copy-on-last-use]
> return ret.empty() ? ret : ret.substr(1);
> ^
> std::move( )
>
> Appears to be caused by the ternary since I also have it inline with a function parameter in another case.
As I know, the compilers can't copy elide always on ternary operators. Therefore, I have also a test, suggesting it on return.
================
Comment at: clang-tools-extra/docs/clang-tidy/checks/performance/unnecessary-copy-on-last-use.rst:50
+
+ A string specifying which include-style is used, `llvm` or `google`. Default
+ is `llvm`.
----------------
Eugene.Zelenko wrote:
> Could such option be shared between different checks? Or even rely on `.clang-format`?
I just oriented myself at other similar checks, which introduced this. It uses both there:
```
UnnecessaryCopyOnLastUseCheck::UnnecessaryCopyOnLastUseCheck(
StringRef Name, ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
Inserter(Options.getLocalOrGlobal("IncludeStyle",
utils::IncludeSorter::IS_LLVM),
```
Do you mean, that I can just remove the description of the option, because it is taken from global options?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D137205/new/
https://reviews.llvm.org/D137205
More information about the cfe-commits
mailing list