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

Felix Berger via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jul 16 11:46:19 PDT 2021


flx created this revision.
flx added reviewers: aaron.ballman, ymandel, gribozavr2.
Herald added a subscriber: xazax.hun.
flx requested review of this revision.
Herald added a project: clang-tools-extra.
Herald added a subscriber: cfe-commits.

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.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D106173

Files:
  clang-tools-extra/clang-tidy/performance/UnnecessaryCopyInitialization.cpp
  clang-tools-extra/clang-tidy/performance/UnnecessaryCopyInitialization.h
  clang-tools-extra/docs/clang-tidy/checks/performance-unnecessary-copy-initialization.rst

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D106173.359403.patch
Type: text/x-patch
Size: 8259 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210716/3e2a5231/attachment-0001.bin>


More information about the cfe-commits mailing list