GCC Middle and Back End API Reference
infinite_recursion_diagnostic Class Reference
Inheritance diagram for infinite_recursion_diagnostic:
Collaboration diagram for infinite_recursion_diagnostic:

Public Member Functions

 infinite_recursion_diagnostic (const exploded_node *prev_entry_enode, const exploded_node *new_entry_enode, tree callee_fndecl)
 
const charget_kind () const final override
 
bool operator== (const infinite_recursion_diagnostic &other) const
 
int get_controlling_option () const final override
 
bool emit (diagnostic_emission_context &ctxt) final override
 
label_text describe_final_event (const evdesc::final_event &ev) final override
 
void add_function_entry_event (const exploded_edge &eedge, checker_path *emission_path) final override
 
void add_final_event (const state_machine *, const exploded_node *enode, const gimple *, tree, state_machine::state_t, checker_path *emission_path) final override
 
bool check_valid_fpath_p (const feasible_node &final_fnode, const gimple *) const final override
 
void maybe_add_sarif_properties (sarif_object &result_obj) const final override
 
bool subclass_equal_p (const pending_diagnostic &base_other) const final override
 
virtual bool terminate_path_p () const
 
virtual bool use_of_uninit_p () const
 
bool equal_p (const pending_diagnostic &other) const
 
virtual location_t fixup_location (location_t loc, bool primary) const
 
virtual label_text describe_state_change (const evdesc::state_change &)
 
virtual diagnostic_event::meaning get_meaning_for_state_change (const evdesc::state_change &) const
 
virtual label_text describe_call_with_state (const evdesc::call_with_state &)
 
virtual label_text describe_return_of_state (const evdesc::return_of_state &)
 
virtual bool maybe_add_custom_events_for_superedge (const exploded_edge &, checker_path *)
 
virtual void add_call_event (const exploded_edge &, checker_path *)
 
virtual void add_region_creation_events (const region *reg, tree capacity, const event_loc_info &loc_info, checker_path &emission_path)
 
virtual bool supercedes_p (const pending_diagnostic &other) const
 
virtual void mark_interesting_stuff (interesting_t *)
 

Static Public Member Functions

static bool same_tree_p (tree t1, tree t2)
 

Static Private Member Functions

static bool fedge_uses_conjured_svalue_p (feasible_edge *fedge)
 
static bool expr_uses_conjured_svalue_p (const region_model &model, tree expr)
 

Private Attributes

const exploded_nodem_prev_entry_enode
 
const exploded_nodem_new_entry_enode
 
tree m_callee_fndecl
 
const checker_eventm_prev_entry_event
 

Detailed Description

A subclass of pending_diagnostic for complaining about suspected
infinite recursion.   

Constructor & Destructor Documentation

◆ infinite_recursion_diagnostic()

infinite_recursion_diagnostic::infinite_recursion_diagnostic ( const exploded_node * prev_entry_enode,
const exploded_node * new_entry_enode,
tree callee_fndecl )
inline

Member Function Documentation

◆ add_call_event()

virtual void ana::pending_diagnostic::add_call_event ( const exploded_edge & ,
checker_path *  )
virtualinherited

◆ add_final_event()

◆ add_function_entry_event()

void infinite_recursion_diagnostic::add_function_entry_event ( const exploded_edge & eedge,
checker_path * emission_path )
inlinefinaloverridevirtual

◆ add_region_creation_events()

virtual void ana::pending_diagnostic::add_region_creation_events ( const region * reg,
tree capacity,
const event_loc_info & loc_info,
checker_path & emission_path )
virtualinherited

◆ check_valid_fpath_p()

bool infinite_recursion_diagnostic::check_valid_fpath_p ( const feasible_node & final_fnode,
const gimple *  ) const
inlinefinaloverridevirtual

◆ describe_call_with_state()

virtual label_text ana::pending_diagnostic::describe_call_with_state ( const evdesc::call_with_state & )
inlinevirtualinherited

References ggc_alloc().

◆ describe_final_event()

label_text infinite_recursion_diagnostic::describe_final_event ( const evdesc::final_event & ev)
inlinefinaloverridevirtual

◆ describe_return_of_state()

virtual label_text ana::pending_diagnostic::describe_return_of_state ( const evdesc::return_of_state & )
inlinevirtualinherited

References ggc_alloc().

◆ describe_state_change()

virtual label_text ana::pending_diagnostic::describe_state_change ( const evdesc::state_change & )
inlinevirtualinherited

References ggc_alloc().

◆ emit()

bool infinite_recursion_diagnostic::emit ( diagnostic_emission_context & ctxt)
inlinefinaloverridevirtual

Implements ana::pending_diagnostic.

References ggc_alloc().

◆ equal_p()

bool ana::pending_diagnostic::equal_p ( const pending_diagnostic & other) const
inlineinherited

◆ expr_uses_conjured_svalue_p()

static bool infinite_recursion_diagnostic::expr_uses_conjured_svalue_p ( const region_model & model,
tree expr )
inlinestaticprivate

◆ fedge_uses_conjured_svalue_p()

static bool infinite_recursion_diagnostic::fedge_uses_conjured_svalue_p ( feasible_edge * fedge)
inlinestaticprivate

◆ fixup_location()

virtual location_t ana::pending_diagnostic::fixup_location ( location_t loc,
bool primary ) const
virtualinherited

◆ get_controlling_option()

int infinite_recursion_diagnostic::get_controlling_option ( ) const
inlinefinaloverridevirtual

Implements ana::pending_diagnostic.

References ggc_alloc().

◆ get_kind()

const char * infinite_recursion_diagnostic::get_kind ( ) const
inlinefinaloverridevirtual

◆ get_meaning_for_state_change()

virtual diagnostic_event::meaning ana::pending_diagnostic::get_meaning_for_state_change ( const evdesc::state_change & ) const
inlinevirtualinherited

◆ mark_interesting_stuff()

virtual void ana::pending_diagnostic::mark_interesting_stuff ( interesting_t * )
inlinevirtualinherited

◆ maybe_add_custom_events_for_superedge()

virtual bool ana::pending_diagnostic::maybe_add_custom_events_for_superedge ( const exploded_edge & ,
checker_path *  )
inlinevirtualinherited

Reimplemented in infinite_loop_diagnostic.

◆ maybe_add_sarif_properties()

void infinite_recursion_diagnostic::maybe_add_sarif_properties ( sarif_object & result_obj) const
inlinefinaloverridevirtual

◆ operator==()

bool infinite_recursion_diagnostic::operator== ( const infinite_recursion_diagnostic & other) const
inline

References m_callee_fndecl.

◆ same_tree_p()

static bool ana::pending_diagnostic::same_tree_p ( tree t1,
tree t2 )
staticinherited

◆ subclass_equal_p()

bool ana::pending_diagnostic_subclass< infinite_recursion_diagnostic >::subclass_equal_p ( const pending_diagnostic & base_other) const
inlinefinaloverridevirtualinherited

◆ supercedes_p()

virtual bool ana::pending_diagnostic::supercedes_p ( const pending_diagnostic & other) const
inlinevirtualinherited

◆ terminate_path_p()

virtual bool ana::pending_diagnostic::terminate_path_p ( ) const
inlinevirtualinherited

◆ use_of_uninit_p()

virtual bool ana::pending_diagnostic::use_of_uninit_p ( ) const
inlinevirtualinherited

Field Documentation

◆ m_callee_fndecl

tree infinite_recursion_diagnostic::m_callee_fndecl
private

Referenced by add_final_event(), and operator==().

◆ m_new_entry_enode

const exploded_node* infinite_recursion_diagnostic::m_new_entry_enode
private

◆ m_prev_entry_enode

const exploded_node* infinite_recursion_diagnostic::m_prev_entry_enode
private

◆ m_prev_entry_event

const checker_event* infinite_recursion_diagnostic::m_prev_entry_event
private

The documentation for this class was generated from the following file: