[PATCH] D126534: Deadstore static analysis: Fix false positive on C++17 assignments
Fred Tingaud via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri May 27 06:08:02 PDT 2022
frederic-tingaud-sonarsource created this revision.
frederic-tingaud-sonarsource added a reviewer: dcoughlin.
Herald added a subscriber: martong.
Herald added a project: All.
frederic-tingaud-sonarsource requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
Dead store detection automatically checks that an expression is a CXXConstructor and skips it because of potential side effects. In C++17, with guaranteed copy elision, this check can fail because we actually receive the implicit cast of a CXXConstructor.
Most checks in the dead store analysis were already stripping all casts and parenthesis and those that weren't were either forgotten (like the constructor) or would not suffer from it, so this patch proposes to factorize the stripping.
It has an impact on where the dead store warning is reported in the case of an explicit cast, from
auto a = static_cast<B>(A());
^~~~~~~~~~~~~~~~~~~
to
auto a = static_cast<B>(A());
^~~
which we think is an improvement.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D126534
Files:
clang/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp
clang/test/Analysis/Inputs/expected-plists/objc-arc.m.plist
clang/test/Analysis/dead-stores.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D126534.432535.patch
Type: text/x-patch
Size: 5902 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220527/467077e6/attachment.bin>
More information about the cfe-commits
mailing list