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

Public Member Functions

 infinite_loop_diagnostic (std::unique_ptr< infinite_loop > inf_loop)
 
const char * get_kind () const final override
 
bool operator== (const infinite_loop_diagnostic &other) const
 
int get_controlling_option () const final override
 
bool emit (diagnostic_emission_context &ctxt) final override
 
bool maybe_add_custom_events_for_superedge (const exploded_edge &, checker_path *) final override
 
label_text describe_final_event (const evdesc::final_event &ev) final override
 
void add_final_event (const state_machine *, const exploded_node *enode, const event_loc_info &, tree, state_machine::state_t, checker_path *emission_path) 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 void add_function_entry_event (const exploded_edge &eedge, checker_path *emission_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 *)
 
virtual bool check_valid_fpath_p (const feasible_node &, const gimple *) const
 

Static Public Member Functions

static bool same_tree_p (tree t1, tree t2)
 

Private Attributes

std::unique_ptr< infinite_loopm_inf_loop
 

Detailed Description

A subclass of pending_diagnostic for complaining about suspected
infinite loops.   

Constructor & Destructor Documentation

◆ infinite_loop_diagnostic()

infinite_loop_diagnostic::infinite_loop_diagnostic ( std::unique_ptr< infinite_loop > inf_loop)
inline

References gcc_assert, and m_inf_loop.

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()

virtual void ana::pending_diagnostic::add_function_entry_event ( const exploded_edge & eedge,
checker_path * emission_path )
virtualinherited

◆ 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()

virtual bool ana::pending_diagnostic::check_valid_fpath_p ( const feasible_node & ,
const gimple *  ) const
inlinevirtualinherited

Reimplemented in infinite_recursion_diagnostic.

◆ describe_call_with_state()

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

◆ describe_final_event()

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

Reimplemented from ana::pending_diagnostic.

◆ describe_return_of_state()

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

◆ describe_state_change()

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

◆ emit()

bool infinite_loop_diagnostic::emit ( diagnostic_emission_context & ctxt)
inlinefinaloverridevirtual

◆ equal_p()

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

◆ fixup_location()

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

◆ get_controlling_option()

int infinite_loop_diagnostic::get_controlling_option ( ) const
inlinefinaloverridevirtual

◆ get_kind()

const char * infinite_loop_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()

bool infinite_loop_diagnostic::maybe_add_custom_events_for_superedge ( const exploded_edge & ,
checker_path *  )
inlinefinaloverridevirtual

Reimplemented from ana::pending_diagnostic.

◆ maybe_add_sarif_properties()

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

◆ operator==()

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

References m_inf_loop.

◆ 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_loop_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_inf_loop

std::unique_ptr<infinite_loop> infinite_loop_diagnostic::m_inf_loop
private

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