Use ExprMutationAnalyzer in performance-for-range-copy
authorShuai Wang <shuaiwang@google.com>
Tue, 10 Jul 2018 22:51:06 +0000 (22:51 +0000)
committerShuai Wang <shuaiwang@google.com>
Tue, 10 Jul 2018 22:51:06 +0000 (22:51 +0000)
commit0ed0febb3e58081edf1c69b62d28f72703a417f8
treee10e9cc1c63427942dee33907784359fbcd28eb8
parent3482871645efab6ea45b921f1ff4071f0825b76d
Use ExprMutationAnalyzer in performance-for-range-copy

Summary:
This gives better coverage to the check as ExprMutationAnalyzer is more
accurate comparing to isOnlyUsedAsConst.

Majority of wins come from const usage of member field, e.g.:
for (auto widget : container) { // copy of loop variable
  if (widget.type == BUTTON) { // const usage only recognized by ExprMutationAnalyzer
    // ...
  }
}

Reviewers: george.karpenkov

Subscribers: a.sidorin, cfe-commits

Differential Revision: https://reviews.llvm.org/D48854

llvm-svn: 336737
clang-tools-extra/clang-tidy/performance/ForRangeCopyCheck.cpp
clang-tools-extra/test/clang-tidy/performance-for-range-copy.cpp