diff options
author | Aaron Ballman <aaron@aaronballman.com> | 2017-11-27 22:59:33 +0000 |
---|---|---|
committer | Aaron Ballman <aaron@aaronballman.com> | 2017-11-27 22:59:33 +0000 |
commit | c566139632f4221b363931642eb637e0757a78d7 (patch) | |
tree | 700d0d74f4d9c82a7004cd7a2f51eecc14414fb0 /clang-tools-extra/clang-tidy/misc/MoveConstantArgumentCheck.cpp | |
parent | 256cc48df62c8dc394ee71ebec85b8b10eb1cddf (diff) | |
download | bcm5719-llvm-c566139632f4221b363931642eb637e0757a78d7.tar.gz bcm5719-llvm-c566139632f4221b363931642eb637e0757a78d7.zip |
Add an option to misc-move-const-arg to not diagnose on trivially copyable types.
Patch by Oleg Smolsky
llvm-svn: 319111
Diffstat (limited to 'clang-tools-extra/clang-tidy/misc/MoveConstantArgumentCheck.cpp')
-rw-r--r-- | clang-tools-extra/clang-tidy/misc/MoveConstantArgumentCheck.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/MoveConstantArgumentCheck.cpp b/clang-tools-extra/clang-tidy/misc/MoveConstantArgumentCheck.cpp index cc2d353da36..196d982eff1 100644 --- a/clang-tools-extra/clang-tidy/misc/MoveConstantArgumentCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/MoveConstantArgumentCheck.cpp @@ -36,6 +36,11 @@ static void ReplaceCallWithArg(const CallExpr *Call, DiagnosticBuilder &Diag, } } +void MoveConstantArgumentCheck::storeOptions( + ClangTidyOptions::OptionMap &Opts) { + Options.store(Opts, "CheckTriviallyCopyableMove", CheckTriviallyCopyableMove); +} + void MoveConstantArgumentCheck::registerMatchers(MatchFinder *Finder) { if (!getLangOpts().CPlusPlus) return; @@ -85,6 +90,10 @@ void MoveConstantArgumentCheck::check(const MatchFinder::MatchResult &Result) { return; } } + + if (!IsConstArg && IsTriviallyCopyable && !CheckTriviallyCopyableMove) + return; + bool IsVariable = isa<DeclRefExpr>(Arg); const auto *Var = IsVariable ? dyn_cast<DeclRefExpr>(Arg)->getDecl() : nullptr; |