GCC Middle and Back End API Reference
ana::operation Class Referenceabstract

#include <ops.h>

Inheritance diagram for ana::operation:

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

 ~operation ()
void dump () const
virtual std::unique_ptr< operationclone () const =0
virtual void print_as_edge_label (pretty_printer *pp, bool user_facing) const =0
virtual bool defines_ssa_name_p (const_tree ssa_name) const =0
virtual 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 =0
virtual const gimplemaybe_get_stmt () const
virtual void execute (operation_context &op_ctxt) const =0
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 =0
virtual void update_state_for_bulk_merger (const program_state &, program_state &) const
virtual void add_any_events_for_eedge (const exploded_edge &eedge, checker_path &out_path) const =0
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

Protected Member Functions

 operation (enum kind kind_)

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

enum kind m_kind

Detailed Description

Abstract base class for an operation along a superedge.   

Member Enumeration Documentation

◆ kind

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

◆ ~operation()

ana::operation::~operation ( )
inline

◆ operation()

ana::operation::operation ( enum kind kind_)
inlineprotected

Member Function Documentation

◆ add_any_events_for_eedge()

virtual void ana::operation::add_any_events_for_eedge ( const exploded_edge & eedge,
checker_path & out_path ) const
pure virtual

◆ clone()

◆ defines_ssa_name_p()

virtual bool ana::operation::defines_ssa_name_p ( const_tree ssa_name) const
pure virtual

◆ dump()

void ana::operation::dump ( ) const

◆ dyn_cast_call_and_return_op()

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

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
inlinevirtual

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
inlinevirtual

Reimplemented in ana::phis_for_edge_op.

◆ execute()

◆ execute_for_feasibility()

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

◆ get_kind()

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

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

◆ maybe_get_stmt()

virtual const gimple * ana::operation::maybe_get_stmt ( ) const
inlinevirtual

Reimplemented in ana::control_flow_op, and ana::gimple_stmt_op.

◆ print_as_edge_label()

virtual void ana::operation::print_as_edge_label ( pretty_printer * pp,
bool user_facing ) const
pure virtual

◆ supports_bulk_merge_p()

virtual bool ana::operation::supports_bulk_merge_p ( ) const
pure virtual

◆ update_state_for_bulk_merger()

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

Reimplemented in ana::phis_for_edge_op.

References gcc_unreachable.

◆ walk_load_store_addr_ops()

virtual void ana::operation::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
pure virtual

Field Documentation

◆ m_kind

enum kind ana::operation::m_kind
private

Referenced by get_kind(), and operation().


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