[clang] [NFC][analyzer] Spread use of 'Expr*' instead of 'Stmt*' (PR #188319)

Balázs Benics via cfe-commits cfe-commits at lists.llvm.org
Mon Mar 30 02:12:12 PDT 2026


================
@@ -2515,9 +2518,13 @@ bool ExprEngine::replayWithoutInlining(ExplodedNode *N,
       BeforeProcessingCall->getLocationContext(), CE, nullptr, &PT);
   // Add the special flag to GDM to signal retrying with no inlining.
   // Note, changing the state ensures that we are not going to cache out.
+  // NOTE: This stores the call site (CE) in the state trait, but only the
+  // the actual pointer value is only checked by an assertion; for the analysis
+  // only the presence or absence of this trait matters.
+  // FIXME: I suspect that CE may be a nullpointer, which will be interpreted
+  // as the absence of this state trait (and does not prevent caching out).
----------------
steakhal wrote:

I'm pretty sure a CallExpr can never be null. The callee expr also can't be null.
What can be null is the direct callee decl (for example, when calling function pointers to unkown callees; or some other expression creates the callable object we are about to call).

BTW, there was a missing comma that tripped me when parsing this. `for the analysis` + comma + `only the presence`...

https://github.com/llvm/llvm-project/pull/188319


More information about the cfe-commits mailing list