GCC Middle and Back End API Reference
ana::predict_op Class Reference

#include <ops.h>

Inheritance diagram for ana::predict_op:
Collaboration diagram for ana::predict_op:

Public Types

enum  kind {
  asm_stmt , assignment , predict_stmt , return_stmt ,
  resx , cond_edge , goto_edge , switch_edge ,
  eh_dispatch_try_edge , eh_dispatch_allowed_edge , phis , call_and_return
}

Public Member Functions

 predict_op (const gimple &predict_stmt)
std::unique_ptr< operationclone () const final override
const gimpleget_stmt () const
void print_as_edge_label (pretty_printer *pp, bool user_facing) const override
bool defines_ssa_name_p (const_tree ssa_name) const final override
void walk_load_store_addr_ops (void *, walk_stmt_load_store_addr_fn, walk_stmt_load_store_addr_fn, walk_stmt_load_store_addr_fn) const final override
const gimplemaybe_get_stmt () const final override
void execute (operation_context &op_ctxt) const override
void execute_on_state (operation_context &op_ctxt, program_state dst_state) const
bool execute_for_feasibility (const exploded_edge &, feasibility_state &, region_model_context *, std::unique_ptr< rejected_constraint > *out_rc) const override
virtual bool execute_for_feasibility (const exploded_edge &, feasibility_state &, region_model_context *, std::unique_ptr< rejected_constraint > @endverbatim *) const
virtual bool supports_bulk_merge_p () const override
void add_any_events_for_eedge (const exploded_edge &eedge, checker_path &out_path) const override
void dump () const
virtual void update_state_for_bulk_merger (const program_state &, program_state &) const
virtual const control_flow_opdyn_cast_control_flow_op () const
virtual const call_and_return_opdyn_cast_call_and_return_op () const
virtual const phis_for_edge_opdyn_cast_phis_for_edge_op () const
enum kind get_kind () const

Static Protected Member Functions

static void handle_on_stmt_for_state_machines (operation_context &op_ctxt, program_state &dst_state, path_context *path_ctxt, bool &unknown_side_effects, const gimple &stmt)

Private Attributes

const gimplem_stmt
enum kind m_kind

Detailed Description

An operation subclass for a GIMPLE_PREDICT stmt.
They have no effect on state, but can be useful for reconstructing
where "return" statements were in the code the user originally wrote,
to improve the reported locations in diagnostics.   

Member Enumeration Documentation

◆ kind

enum ana::operation::kind
inherited
Enumerator
asm_stmt 
assignment 
predict_stmt 
return_stmt 
resx 
cond_edge 
goto_edge 
switch_edge 
eh_dispatch_try_edge 
eh_dispatch_allowed_edge 
phis 
call_and_return 

Constructor & Destructor Documentation

◆ predict_op()

ana::predict_op::predict_op ( const gimple & predict_stmt)
inline

Member Function Documentation

◆ add_any_events_for_eedge()

void ana::gimple_stmt_op::add_any_events_for_eedge ( const exploded_edge & eedge,
checker_path & out_path ) const
overridevirtualinherited

Implements ana::operation.

Reimplemented in ana::greturn_op, ana::resx_op, and ana::setjmp_op.

◆ clone()

std::unique_ptr< operation > ana::predict_op::clone ( ) const
inlinefinaloverridevirtual

◆ defines_ssa_name_p()

bool ana::gimple_stmt_op::defines_ssa_name_p ( const_tree ssa_name) const
finaloverridevirtualinherited

Implements ana::operation.

References ssa_name.

◆ dump()

void ana::operation::dump ( ) const
inherited

◆ dyn_cast_call_and_return_op()

virtual const call_and_return_op * ana::operation::dyn_cast_call_and_return_op ( ) const
inlinevirtualinherited

Reimplemented in ana::call_and_return_op.

◆ dyn_cast_control_flow_op()

virtual const control_flow_op * ana::operation::dyn_cast_control_flow_op ( ) const
inlinevirtualinherited

Reimplemented in ana::control_flow_op.

◆ dyn_cast_phis_for_edge_op()

virtual const phis_for_edge_op * ana::operation::dyn_cast_phis_for_edge_op ( ) const
inlinevirtualinherited

Reimplemented in ana::phis_for_edge_op.

◆ execute()

void ana::gimple_stmt_op::execute ( operation_context & op_ctxt) const
overridevirtualinherited

◆ execute_for_feasibility() [1/2]

bool ana::gimple_stmt_op::execute_for_feasibility ( const exploded_edge & ,
feasibility_state & ,
region_model_context * ,
std::unique_ptr< rejected_constraint > * out_rc ) const
overrideinherited

◆ execute_for_feasibility() [2/2]

virtual bool ana::operation::execute_for_feasibility ( const exploded_edge & ,
feasibility_state & ,
region_model_context * ,
std::unique_ptr< rejected_constraint > @endverbatim *  ) const
inlinevirtualinherited

◆ execute_on_state()

void ana::gimple_stmt_op::execute_on_state ( operation_context & op_ctxt,
program_state dst_state ) const
inherited

◆ get_kind()

enum kind ana::operation::get_kind ( ) const
inlineinherited

◆ get_stmt()

◆ handle_on_stmt_for_state_machines()

void ana::operation::handle_on_stmt_for_state_machines ( operation_context & op_ctxt,
program_state & dst_state,
path_context * path_ctxt,
bool & unknown_side_effects,
const gimple & stmt )
staticprotectedinherited

◆ maybe_get_stmt()

const gimple * ana::gimple_stmt_op::maybe_get_stmt ( ) const
inlinefinaloverridevirtualinherited

Reimplemented from ana::operation.

References final(), and m_stmt.

◆ print_as_edge_label()

void ana::gimple_stmt_op::print_as_edge_label ( pretty_printer * pp,
bool user_facing ) const
overridevirtualinherited

Implements ana::operation.

◆ supports_bulk_merge_p()

virtual bool ana::gimple_stmt_op::supports_bulk_merge_p ( ) const
overridevirtualinherited

◆ update_state_for_bulk_merger()

virtual void ana::operation::update_state_for_bulk_merger ( const program_state & ,
program_state &  ) const
inlinevirtualinherited

Reimplemented in ana::phis_for_edge_op.

References gcc_unreachable.

◆ walk_load_store_addr_ops()

void ana::gimple_stmt_op::walk_load_store_addr_ops ( void * ,
walk_stmt_load_store_addr_fn ,
walk_stmt_load_store_addr_fn ,
walk_stmt_load_store_addr_fn  ) const
finaloverridevirtualinherited

Implements ana::operation.

Field Documentation

◆ m_kind

enum kind ana::operation::m_kind
privateinherited

Referenced by get_kind(), and operation().

◆ m_stmt

const gimple& ana::gimple_stmt_op::m_stmt
privateinherited

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