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

#include <ops.h>

Inheritance diagram for ana::eh_dispatch_try_edge_op:
Collaboration diagram for ana::eh_dispatch_try_edge_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

 eh_dispatch_try_edge_op (supernode *src_snode, supernode *dst_snode, ::edge cfg_edge, const geh_dispatch &geh_dispatch_stmt, eh_region eh_reg, eh_catch ehc)
std::unique_ptr< operationclone () const final override
void print_as_edge_label (pretty_printer *pp, bool user_facing) const final override
void add_any_events_for_eedge (const exploded_edge &eedge, checker_path &out_path) const final override
const geh_dispatchget_geh_dispatch () const
eh_region get_eh_region () const
bool defines_ssa_name_p (const_tree) 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
virtual label_text maybe_describe_condition (bool can_colorize) const
void execute (operation_context &op_ctxt) const final override
bool supports_bulk_merge_p () const final override
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
const control_flow_opdyn_cast_control_flow_op () const
::edge get_cfg_edge () const
int get_flags () const
int back_edge_p () const
const gimpleget_ctrlflow_stmt () const
void dump () const
virtual void update_state_for_bulk_merger (const program_state &, program_state &) 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 Public Member Functions

static std::unique_ptr< eh_dispatch_edge_opmake (supernode *src, supernode *dest, ::edge cfg_edge, const geh_dispatch &geh_dispatch_stmt)

Protected Member Functions

supernodeget_src_snode () 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 Member Functions

bool apply_eh_constraints (const superedge *sedge, region_model &model, region_model_context *ctxt, tree exception_type, std::unique_ptr< rejected_constraint > *out) const final override
bool apply_constraints (const superedge *sedge, region_model &model, region_model_context *ctxt, std::unique_ptr< rejected_constraint > *out) const final override

Private Attributes

eh_catch m_eh_catch
supernodem_src_snode
supernodem_dst_snode
eh_region m_eh_region
::edge m_cfg_edge
const gimplem_ctrlflow_stmt
enum kind m_kind

Detailed Description

Concrete operation for edges from an eh_dispatch statement
for ERT_TRY regions.   

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

◆ eh_dispatch_try_edge_op()

ana::eh_dispatch_try_edge_op::eh_dispatch_try_edge_op ( supernode * src_snode,
supernode * dst_snode,
::edge cfg_edge,
const geh_dispatch & geh_dispatch_stmt,
eh_region eh_reg,
eh_catch ehc )

Member Function Documentation

◆ add_any_events_for_eedge()

void ana::eh_dispatch_try_edge_op::add_any_events_for_eedge ( const exploded_edge & eedge,
checker_path & out_path ) const
finaloverridevirtual

Reimplemented from ana::control_flow_op.

◆ apply_constraints()

bool ana::eh_dispatch_edge_op::apply_constraints ( const superedge * sedge,
region_model & model,
region_model_context * ctxt,
std::unique_ptr< rejected_constraint > * out ) const
finaloverrideprivatevirtualinherited

Implements ana::control_flow_op.

◆ apply_eh_constraints()

bool ana::eh_dispatch_try_edge_op::apply_eh_constraints ( const superedge * sedge,
region_model & model,
region_model_context * ctxt,
tree exception_type,
std::unique_ptr< rejected_constraint > * out ) const
finaloverrideprivatevirtual

◆ back_edge_p()

int ana::control_flow_op::back_edge_p ( ) const
inlineinherited

References get_flags().

◆ clone()

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

Implements ana::operation.

References final().

◆ defines_ssa_name_p()

bool ana::control_flow_op::defines_ssa_name_p ( const_tree ) const
inlinefinaloverridevirtualinherited

Implements ana::operation.

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

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

◆ 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::control_flow_op::execute ( operation_context & op_ctxt) const
finaloverridevirtualinherited

Implements ana::operation.

◆ execute_for_feasibility() [1/2]

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

References control_flow_op().

◆ 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

◆ get_cfg_edge()

::edge ana::control_flow_op::get_cfg_edge ( ) const
inlineinherited

◆ get_ctrlflow_stmt()

◆ get_eh_region()

eh_region ana::eh_dispatch_edge_op::get_eh_region ( ) const
inlineinherited

References m_eh_region.

◆ get_flags()

int ana::control_flow_op::get_flags ( ) const
inlineinherited

References m_cfg_edge.

Referenced by back_edge_p().

◆ get_geh_dispatch()

const geh_dispatch & ana::eh_dispatch_edge_op::get_geh_dispatch ( ) const
inlineinherited

◆ get_kind()

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

◆ get_src_snode()

supernode * ana::eh_dispatch_edge_op::get_src_snode ( ) const
inlineprotectedinherited

References m_src_snode.

◆ 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

◆ make()

std::unique_ptr< eh_dispatch_edge_op > ana::eh_dispatch_edge_op::make ( supernode * src,
supernode * dest,
::edge cfg_edge,
const geh_dispatch & geh_dispatch_stmt )
staticinherited

◆ maybe_describe_condition()

virtual label_text ana::control_flow_op::maybe_describe_condition ( bool can_colorize) const
virtualinherited

Reimplemented in ana::gcond_edge_op, and ana::ggoto_edge_op.

◆ maybe_get_stmt()

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

Reimplemented from ana::operation.

References final(), and m_ctrlflow_stmt.

◆ print_as_edge_label()

void ana::eh_dispatch_try_edge_op::print_as_edge_label ( pretty_printer * pp,
bool user_facing ) const
finaloverridevirtual

Implements ana::operation.

◆ supports_bulk_merge_p()

bool ana::control_flow_op::supports_bulk_merge_p ( ) const
inlinefinaloverridevirtualinherited

Implements ana::operation.

References final().

◆ 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::control_flow_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_cfg_edge

::edge ana::control_flow_op::m_cfg_edge
privateinherited

◆ m_ctrlflow_stmt

const gimple& ana::control_flow_op::m_ctrlflow_stmt
privateinherited

◆ m_dst_snode

supernode* ana::eh_dispatch_edge_op::m_dst_snode
privateinherited

◆ m_eh_catch

eh_catch ana::eh_dispatch_try_edge_op::m_eh_catch
private

◆ m_eh_region

eh_region ana::eh_dispatch_edge_op::m_eh_region
privateinherited

Referenced by get_eh_region().

◆ m_kind

enum kind ana::operation::m_kind
privateinherited

Referenced by get_kind(), and operation().

◆ m_src_snode

supernode* ana::eh_dispatch_edge_op::m_src_snode
privateinherited

Referenced by get_src_snode().


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