gcc/ChangeLog: * analyzer/analyzer.h (class state_change_event): Forward decl. * analyzer/checker-path.cc (state_change_event::get_desc): Pass *this to evdesc::state_change ctor. * analyzer/pending-diagnostic.h (evdesc::state_change::state_change): Add a const state_change_event & param and use it initialize... (evdesc::state_change::m_event): ...this new field. --- gcc/analyzer/analyzer.h | 1 + gcc/analyzer/checker-path.cc | 2 +- gcc/analyzer/pending-diagnostic.h | 6 ++++-- 3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/gcc/analyzer/analyzer.h b/gcc/analyzer/analyzer.h index 19bc2c6d8252..353285c35c36 100644 --- a/gcc/analyzer/analyzer.h +++ b/gcc/analyzer/analyzer.h @@ -50,6 +50,7 @@ struct model_merger; struct svalue_id_merger_mapping; struct canonicalization; class pending_diagnostic; +class state_change_event; class checker_path; class extrinsic_state; class sm_state_map; diff --git a/gcc/analyzer/checker-path.cc b/gcc/analyzer/checker-path.cc index bc47380bc3f5..554a20f31bec 100644 --- a/gcc/analyzer/checker-path.cc +++ b/gcc/analyzer/checker-path.cc @@ -229,7 +229,7 @@ state_change_event::get_desc (bool can_colorize) const label_text custom_desc = m_pending_diagnostic->describe_state_change (evdesc::state_change (can_colorize, m_var, m_origin, - m_from, m_to, m_emission_id)); + m_from, m_to, m_emission_id, *this)); if (custom_desc.m_buffer) { if (flag_analyzer_verbose_state_changes) diff --git a/gcc/analyzer/pending-diagnostic.h b/gcc/analyzer/pending-diagnostic.h index 4103a91e2f56..15a1379e8fd1 100644 --- a/gcc/analyzer/pending-diagnostic.h +++ b/gcc/analyzer/pending-diagnostic.h @@ -50,11 +50,12 @@ struct state_change : public event_desc tree origin, state_machine::state_t old_state, state_machine::state_t new_state, - diagnostic_event_id_t event_id) + diagnostic_event_id_t event_id, + const state_change_event &event) : event_desc (colorize), m_expr (expr), m_origin (origin), m_old_state (old_state), m_new_state (new_state), - m_event_id (event_id) + m_event_id (event_id), m_event (event) {} bool is_global_p () const { return m_expr == NULL_TREE; } @@ -64,6 +65,7 @@ struct state_change : public event_desc state_machine::state_t m_old_state; state_machine::state_t m_new_state; diagnostic_event_id_t m_event_id; + const state_change_event &m_event; }; /* For use by pending_diagnostic::describe_call_with_state. */ -- 2.21.0