analyzer: fixes to -fdump-analyzer-state-purge

gcc/analyzer/ChangeLog:
	* state-purge.cc (state_purge_annotator::add_node_annotations):
	Avoid duplicate before-supernode annotations when returning from
	an interprocedural call.  Show after-supernode annotations.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
This commit is contained in:
David Malcolm 2022-03-17 16:08:59 -04:00
parent 2b3404357a
commit 79e210f0c8

View file

@ -499,11 +499,12 @@ state_purge_annotator::add_node_annotations (graphviz_out *gv,
/* Different in-edges mean different names need purging.
Determine which points to dump. */
auto_vec<function_point> points;
if (n.entry_p ())
if (n.entry_p () || n.m_returning_call)
points.safe_push (function_point::before_supernode (&n, NULL));
else
for (auto inedge : n.m_preds)
points.safe_push (function_point::before_supernode (&n, inedge));
points.safe_push (function_point::after_supernode (&n));
for (auto & point : points)
{