[gcc r16-6175] analyzer: fix state dumps for return_event [PR122003]
David Malcolm
dmalcolm@gcc.gnu.org
Tue Dec 16 17:11:39 GMT 2025
https://gcc.gnu.org/g:1823d42676a98804d8b05ee5ea59ed69da427b91
commit r16-6175-g1823d42676a98804d8b05ee5ea59ed69da427b91
Author: David Malcolm <dmalcolm@redhat.com>
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 <dmalcolm@redhat.com>
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
More information about the Gcc-cvs
mailing list