From: David Malcolm Date: Thu, 17 Mar 2022 20:08:59 +0000 (-0400) Subject: analyzer: fixes to -fdump-analyzer-state-purge X-Git-Tag: basepoints/gcc-13~618 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=79e210f0c8e1fad875333e93b5ae2fe9b4879b7a;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/analyzer/state-purge.cc b/gcc/analyzer/state-purge.cc index e99c9cb593ec..c37234ff16ae 100644 --- a/gcc/analyzer/state-purge.cc +++ b/gcc/analyzer/state-purge.cc @@ -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 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) {