[clang] [analyzer][NFC] Explain why operator new/delete should never be eval-called (PR #161370)
Arseniy Zaostrovnykh via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 30 06:36:58 PDT 2025
================
@@ -909,7 +909,13 @@ void ExprEngine::VisitCXXNewAllocatorCall(const CXXNewExpr *CNE,
ExplodedNodeSet DstPostCall;
StmtNodeBuilder CallBldr(DstPreCall, DstPostCall, *currBldrCtx);
for (ExplodedNode *I : DstPreCall) {
- // FIXME: Provide evalCall for checkers?
+ // Operator new calls (CXXNewExpr) are intentionally not eval-called,
+ // because it does not make sense to eval-call user-provided functions.
+ // 1) If the new operator can be inlined, then don't prevent it from
+ // inlining by having an eval-call of that operator.
+ // 2) If it can't be inlined, then the default conservative modeling
+ // is what we want anyway.
+ // So the best is to not allow eval-calling CXXNewExprs from checkers.
----------------
necto wrote:
Perhaps also suggest to do a PreCall or PostCall for the bookkeeping the user has in mind?
https://github.com/llvm/llvm-project/pull/161370
More information about the cfe-commits
mailing list