]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
analyzer: fix state dumps for return_event [PR122003]
authorDavid Malcolm <dmalcolm@redhat.com>
Tue, 16 Dec 2025 17:10:26 +0000 (12:10 -0500)
committerDavid Malcolm <dmalcolm@redhat.com>
Tue, 16 Dec 2025 17:10:26 +0000 (12:10 -0500)
In the reimplementation of supergraph (r16-6063-g0b786d961d4426) the
class return_event moved from being a subclass of superedge_event to
a subclass of checker_event, thus using checker_event::get_program_state
which returns null.

This stopped e.g. HTML state-graph output showing state at return events
in e.g. event (8) of
https://dmalcolm.fedorapeople.org/gcc/2025-12-15/state-diagram-1.c.html

Fixed by implementing return_event::get_program_state.

gcc/analyzer/ChangeLog:
PR analyzer/122003
* checker-event.cc (return_event::get_program_state): New.
* checker-event.h (return_event::get_program_state): New decl.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
gcc/analyzer/checker-event.cc
gcc/analyzer/checker-event.h

index bd62e3887a6e636f64c17a87eb48741d3633da2e..67d5360e4e0583df175ac1cfb30d553343688a95 100644 (file)
@@ -847,6 +847,12 @@ return_event::is_return_p () const
   return true;
 }
 
+const program_state *
+return_event::get_program_state () const
+{
+  return &m_eedge.m_dest->get_state ();
+}
+
 /* class start_consolidated_cfg_edges_event : public checker_event.  */
 
 void
index f79130ffb382840b031029d2b6474e8ba3dda8d2..64f625ee545a776db4ab63302c5128b0b57468c0 100644 (file)
@@ -603,6 +603,9 @@ public:
     return m_call_and_return_op;
   }
 
+  const program_state *
+  get_program_state () const override;
+
   /* Mark this edge event as being either an interprocedural call or
      return in which VAR is in STATE, and that this is critical to the
      diagnostic (so that print_desc can attempt to get a better description