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 <dmalcolm@redhat.com>
This commit is contained in:
David Malcolm
2025-12-16 12:10:26 -05:00
parent 1d29b68562
commit 1823d42676
2 changed files with 9 additions and 0 deletions

View 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

View 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