[all-commits] [llvm/llvm-project] cb4c12: [clang-tidy] performance-unnecessary-copy-initiali...

Felix Berger via All-commits all-commits at lists.llvm.org
Thu Jul 22 13:21:16 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: cb4c12b6117a6f2989d5745854a94c75cb6a09ba
      https://github.com/llvm/llvm-project/commit/cb4c12b6117a6f2989d5745854a94c75cb6a09ba
  Author: Felix Berger <flx at google.com>
  Date:   2021-07-22 (Thu, 22 Jul 2021)

  Changed paths:
    M clang-tools-extra/clang-tidy/performance/UnnecessaryCopyInitialization.cpp
    M clang-tools-extra/clang-tidy/performance/UnnecessaryCopyInitialization.h
    M clang-tools-extra/docs/clang-tidy/checks/performance-unnecessary-copy-initialization.rst
    A clang-tools-extra/test/clang-tidy/checkers/performance-unnecessary-copy-initialization-excluded-container-types.cpp

  Log Message:
  -----------
  [clang-tidy] performance-unnecessary-copy-initialization: Create option to exclude container types from triggering the check.

Add string list option of type names analagous to `AllowedTypes` which lets
users specify a list of ExcludedContainerTypes.

Types matching this list will not trigger the check when an expensive variable
is copy initialized from a const accessor method they provide, i.e.:

```
ExcludedContainerTypes = 'ExcludedType'

void foo() {
  ExcludedType<ExpensiveToCopy> Container;
  const ExpensiveToCopy NecessaryCopy = Container.get();
}
```

Even though an expensive to copy variable is copy initialized the check does not
trigger because the container type is excluded.

This is useful for container types that don't own their data, such as view types
where modification of the returned references in other places cannot be reliably
tracked, or const incorrect types.

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

Reviewed-by: ymandel




More information about the All-commits mailing list