[clang-tools-extra] [clang-tidy] bugprone-assert-side-effect can detect side effect from non-const reference parameters (PR #84095)
Julian Schmidt via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 6 15:59:32 PST 2024
================
@@ -60,16 +60,27 @@ AST_MATCHER_P2(Expr, hasSideEffect, bool, CheckFunctionCalls,
}
if (const auto *CExpr = dyn_cast<CallExpr>(E)) {
- bool Result = CheckFunctionCalls;
+ if (!CheckFunctionCalls)
+ return false;
if (const auto *FuncDecl = CExpr->getDirectCallee()) {
if (FuncDecl->getDeclName().isIdentifier() &&
IgnoredFunctionsMatcher.matches(*FuncDecl, Finder,
Builder)) // exceptions come here
- Result = false;
- else if (const auto *MethodDecl = dyn_cast<CXXMethodDecl>(FuncDecl))
- Result &= !MethodDecl->isConst();
+ return false;
+ for (size_t I = 0; I < FuncDecl->getNumParams(); I++) {
+ const ParmVarDecl *P = FuncDecl->getParamDecl(I);
+ const Expr *ArgExpr =
+ I < CExpr->getNumArgs() ? CExpr->getArg(I) : nullptr;
+ QualType PT = P->getType().getCanonicalType();
----------------
5chmidti wrote:
`const QualType`
https://github.com/llvm/llvm-project/pull/84095
More information about the cfe-commits
mailing list