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

Public Types

enum  reachability { ALL_BLOCKS , REACHABLE_BLOCKS , REACHABLE_BLOCKS_PRESERVING_FLAGS }
 

Public Member Functions

 rewrite_dom_walker (cdi_direction direction)
 
edge before_dom_children (basic_block) final override
 
void after_dom_children (basic_block) final override
 
void walk (basic_block)
 

Static Public Attributes

static const edge STOP = (edge)-1
 

Private Member Functions

bool bb_reachable (struct function *, basic_block)
 
void propagate_unreachable_to_edges (basic_block, FILE *, dump_flags_t)
 

Private Attributes

enum cdi_direction m_dom_direction: 2
 
enum reachability m_reachability: 2
 
bool m_user_bb_to_rpo
 
basic_block m_unreachable_dom
 
int * m_bb_to_rpo
 

Member Enumeration Documentation

◆ reachability

enum dom_walker::reachability
inherited
Enumerator
ALL_BLOCKS 
REACHABLE_BLOCKS 
REACHABLE_BLOCKS_PRESERVING_FLAGS 

Constructor & Destructor Documentation

◆ rewrite_dom_walker()

rewrite_dom_walker::rewrite_dom_walker ( cdi_direction direction)
inline

Member Function Documentation

◆ after_dom_children()

void rewrite_dom_walker::after_dom_children ( basic_block bb)
finaloverridevirtual
Called after visiting all the statements in basic block BB and all
of its dominator children.  Restore CURRDEFS to its original value.   

Reimplemented from dom_walker.

References block_defs_stack, common_info::current_def, get_common_info(), is_gimple_reg(), NULL, NULL_TREE, SSA_NAME_VAR, and TREE_CODE.

◆ bb_reachable()

bool dom_walker::bb_reachable ( struct function * fun,
basic_block bb )
privateinherited

◆ before_dom_children()

edge rewrite_dom_walker::before_dom_children ( basic_block bb)
finaloverridevirtual
SSA Rewriting Step 1.  Initialization, create a block local stack
of reaching definitions for new SSA names produced in this block
(BLOCK_DEFS).  Register new definitions for every PHI node in the
block.   

Reimplemented from dom_walker.

References bitmap_bit_p, block_defs_stack, dump_file, dump_flags, gimple_phi_result(), gsi_end_p(), gsi_next(), gsi_start_bb(), gsi_start_phis(), gsi_stmt(), basic_block_def::index, interesting_blocks, NULL, NULL_TREE, register_new_def(), rewrite_add_phi_arguments(), rewrite_stmt(), SSA_NAME_VAR, and TDF_DETAILS.

◆ propagate_unreachable_to_edges()

void dom_walker::propagate_unreachable_to_edges ( basic_block bb,
FILE * dump_file,
dump_flags_t dump_flags )
privateinherited
BB has been determined to be unreachable.  Propagate that property
to incoming and outgoing edges of BB as appropriate.   

References CDI_DOMINATORS, dominated_by_p(), dump_file, dump_flags, FOR_EACH_EDGE, basic_block_def::index, dom_walker::m_unreachable_dom, basic_block_def::preds, basic_block_def::succs, and TDF_DETAILS.

Referenced by dom_walker::walk().

◆ walk()

Field Documentation

◆ m_bb_to_rpo

int* dom_walker::m_bb_to_rpo
privateinherited

◆ m_dom_direction

enum cdi_direction dom_walker::m_dom_direction
privateinherited

Referenced by dom_walker::walk().

◆ m_reachability

enum reachability dom_walker::m_reachability
privateinherited

◆ m_unreachable_dom

basic_block dom_walker::m_unreachable_dom
privateinherited

◆ m_user_bb_to_rpo

bool dom_walker::m_user_bb_to_rpo
privateinherited

◆ STOP

const edge dom_walker::STOP = (edge)-1
staticinherited

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