[analyzer] Deadstore static analysis: Fix false positive on C++17 assignments
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. Patch By: frederic-tingaud-sonarsource Reviewed By: steakhal Differential Revision: https://reviews.llvm.org/D126534
Loading
Please sign in to comment