diff options
author | George Karpenkov <ekarpenkov@apple.com> | 2018-08-02 18:17:01 +0000 |
---|---|---|
committer | George Karpenkov <ekarpenkov@apple.com> | 2018-08-02 18:17:01 +0000 |
commit | 3cff19be36fc5ec3322a635df3304da487b5b946 (patch) | |
tree | 1d5e285185da537d40078ee60c3607e61335b2f2 | |
parent | 97604b4f096d57b9edc188903ef083b5df7f7c68 (diff) | |
download | bcm5719-llvm-3cff19be36fc5ec3322a635df3304da487b5b946.tar.gz bcm5719-llvm-3cff19be36fc5ec3322a635df3304da487b5b946.zip |
[analyzer] Forward arguments in registerChecker to avoid accidental copies
Differential Revision: https://reviews.llvm.org/D50108
llvm-svn: 338753
-rw-r--r-- | clang/include/clang/StaticAnalyzer/Core/CheckerManager.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h b/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h index 7c353326be4..ea2952b3b11 100644 --- a/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h +++ b/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h @@ -149,13 +149,13 @@ public: /// /// \returns a pointer to the checker object. template <typename CHECKER, typename... AT> - CHECKER *registerChecker(AT... Args) { + CHECKER *registerChecker(AT &&... Args) { CheckerTag tag = getTag<CHECKER>(); CheckerRef &ref = CheckerTags[tag]; if (ref) return static_cast<CHECKER *>(ref); // already registered. - CHECKER *checker = new CHECKER(Args...); + CHECKER *checker = new CHECKER(std::forward<AT>(Args)...); checker->Name = CurrentCheckName; CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>)); CHECKER::_register(checker, *this); |