summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorge Karpenkov <ekarpenkov@apple.com>2018-08-02 18:17:01 +0000
committerGeorge Karpenkov <ekarpenkov@apple.com>2018-08-02 18:17:01 +0000
commit3cff19be36fc5ec3322a635df3304da487b5b946 (patch)
tree1d5e285185da537d40078ee60c3607e61335b2f2
parent97604b4f096d57b9edc188903ef083b5df7f7c68 (diff)
downloadbcm5719-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.h4
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);
OpenPOWER on IntegriCloud