================
@@ -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
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to