This patch is meant to fix #60412.
When we falled back to conservative evaluation, CallEvent::getProgramPoint() was used to
create a new program point at the location of the call.
If an implicit destructor was invoked, the location of the call was set to the declaration of the
destructor, which lead to a loop in some cases, like the one described in the issue above.
This patch changes the way, the new program points are created and ensures that we no longer
have a loop in the egraph when not needed. This behaviour seems to also increase our coverage,
as the egraph no longer stops at the looped section.
Old egraph | New egraph | |