[PATCH] D149647: [NFC][Clang]Fix static analyzer tool remarks about large copies by value

Soumi Manna via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed May 3 11:04:00 PDT 2023


Manna added a comment.

Thanks @erichkeane for response.

@MyDeveloperDay, Our internal Coverity link won't work without login. 
This is what Coverity was complaining about.

Big parameter passed by value
Copying large values is inefficient, consider passing by reference; Low, medium, and high size thresholds for detection can be adjusted.

1. In clang::​format::​internal::​reformat(clang::​format::​FormatStyle const &, llvm::​StringRef, llvm::​ArrayRef<clang::​tooling::​Range>, unsigned int, unsigned int, unsigned int, llvm::​StringRef, clang::​format::​FormattingAttemptStatus *)::​[lambda(clang::​format::​Environment const &) (instance 5)]::​operator ()(clang::​format::​Environment const &): A very large function call parameter exceeding the high threshold is passed by value. (CWE-398)

if (Style.RemoveSemicolon) {
3499      FormatStyle S = Expanded;
3500      S.RemoveSemicolon = true;

pass_by_value: Capturing variable S of type clang::format::FormatStyle (size 572 bytes) by value, which exceeds the high threshold of 512 bytes.

3501      Passes.emplace_back([&, S](const Environment &Env) {
3502        return SemiRemover(Env, S).process(/*SkipAnnotation=*/true);
3503      });
3504    }

2. In clang::​format::​internal::​reformat(clang::​format::​FormatStyle const &, llvm::​StringRef, llvm::​ArrayRef<clang::​tooling::​Range>, unsigned int, unsigned int, unsigned int, llvm::​StringRef, clang::​format::​FormattingAttemptStatus *)::​[lambda(clang::​format::​Environment const &) (instance 4)]::​operator ()(clang::​format::​Environment const &): A very large function call parameter exceeding the high threshold is passed by value. (CWE-398)

if (Style.RemoveBracesLLVM) {
3491      FormatStyle S = Expanded;
3492      S.RemoveBracesLLVM = true;

pass_by_value: Capturing variable S of type clang::format::FormatStyle (size 572 bytes) by value, which exceeds the high threshold of 512 bytes.

3493      Passes.emplace_back([&, S](const Environment &Env) {
3494        return BracesRemover(Env, S).process(/*SkipAnnotation=*/true);
3495      });
3496    }

3. In clang::​format::​internal::​reformat(clang::​format::​FormatStyle const &, llvm::​StringRef, llvm::​ArrayRef<clang::​tooling::​Range>, unsigned int, unsigned int, unsigned int, llvm::​StringRef, clang::​format::​FormattingAttemptStatus *)::​[lambda(clang::​format::​Environment const &) (instance 3)]::​operator ()(clang::​format::​Environment const &): A very large function call parameter exceeding the high threshold is passed by value. (CWE-398)

if (Style.InsertBraces) {
3483      FormatStyle S = Expanded;
3484      S.InsertBraces = true;

pass_by_value: Capturing variable S of type clang::format::FormatStyle (size 572 bytes) by value, which exceeds the high threshold of 512 bytes.

3485      Passes.emplace_back([&, S](const Environment &Env) {
3486        return BracesInserter(Env, S).process(/*SkipAnnotation=*/true);
3487      });
3488    }

In D149647#4316169 <https://reviews.llvm.org/D149647#4316169>, @erichkeane wrote:

> In D149647#4316134 <https://reviews.llvm.org/D149647#4316134>, @MyDeveloperDay wrote:
>
>> Can you link to the Coverity issue so we can see what it was complaining about?
>
> Unfortunately this is from an internal-run of Coverity that Intel is running.  I'd be shocked if it doesn't appear on the open-source/LLVM version though?




Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D149647/new/

https://reviews.llvm.org/D149647



More information about the cfe-commits mailing list