https://gcc.gnu.org/g:1823d42676a98804d8b05ee5ea59ed69da427b91
commit r16-6175-g1823d42676a98804d8b05ee5ea59ed69da427b91 Author: David Malcolm <[email protected]> Date: Tue Dec 16 12:10:26 2025 -0500 analyzer: fix state dumps for return_event [PR122003] 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 <[email protected]> Diff: --- gcc/analyzer/checker-event.cc | 6 ++++++ gcc/analyzer/checker-event.h | 3 +++ 2 files changed, 9 insertions(+) diff --git a/gcc/analyzer/checker-event.cc b/gcc/analyzer/checker-event.cc index bd62e3887a6e..67d5360e4e05 100644 --- a/gcc/analyzer/checker-event.cc +++ b/gcc/analyzer/checker-event.cc @@ -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 diff --git a/gcc/analyzer/checker-event.h b/gcc/analyzer/checker-event.h index f79130ffb382..64f625ee545a 100644 --- a/gcc/analyzer/checker-event.h +++ b/gcc/analyzer/checker-event.h @@ -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
