aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2022-03-17 16:08:59 -0400
committerDavid Malcolm <dmalcolm@redhat.com>2022-03-17 18:38:00 -0400
commit79e210f0c8e1fad875333e93b5ae2fe9b4879b7a (patch)
tree2e6158873eaf17bc6fe0d8cdb28c22d26e2d45e7
parent2b3404357a1f9991921189e331aeefb826f0523a (diff)
downloadgcc-79e210f0c8e1fad875333e93b5ae2fe9b4879b7a.zip
gcc-79e210f0c8e1fad875333e93b5ae2fe9b4879b7a.tar.gz
gcc-79e210f0c8e1fad875333e93b5ae2fe9b4879b7a.tar.bz2
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>
-rw-r--r--gcc/analyzer/state-purge.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/analyzer/state-purge.cc b/gcc/analyzer/state-purge.cc
index e99c9cb..c37234f 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<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)
{