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

Public Types

enum  reachability { ALL_BLOCKS , REACHABLE_BLOCKS , REACHABLE_BLOCKS_PRESERVING_FLAGS }
 

Public Member Functions

 substitute_and_fold_dom_walker (cdi_direction direction, class substitute_and_fold_engine *engine)
 
 ~substitute_and_fold_dom_walker ()
 
edge before_dom_children (basic_block) final override
 
void after_dom_children (basic_block bb) final override
 
void walk (basic_block)
 

Data Fields

bool something_changed
 
bitmap dceworklist
 
vec< gimple * > stmts_to_fixup
 
bitmap need_eh_cleanup
 
bitmap need_ab_cleanup
 
class substitute_and_fold_enginesubstitute_and_fold_engine
 

Static Public Attributes

static const edge STOP = (edge)-1
 

Private Member Functions

void foreach_new_stmt_in_bb (gimple_stmt_iterator old_gsi, gimple_stmt_iterator new_gsi)
 
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

Enumerator
ALL_BLOCKS 
REACHABLE_BLOCKS 
REACHABLE_BLOCKS_PRESERVING_FLAGS 

Constructor & Destructor Documentation

◆ substitute_and_fold_dom_walker()

substitute_and_fold_dom_walker::substitute_and_fold_dom_walker ( cdi_direction direction,
class substitute_and_fold_engine * engine )
inline

◆ ~substitute_and_fold_dom_walker()

substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker ( )
inline

Member Function Documentation

◆ after_dom_children()

void substitute_and_fold_dom_walker::after_dom_children ( basic_block bb)
inlinefinaloverridevirtual

Reimplemented from dom_walker.

References substitute_and_fold_engine::post_fold_bb().

◆ bb_reachable()

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

◆ before_dom_children()

◆ foreach_new_stmt_in_bb()

void substitute_and_fold_dom_walker::foreach_new_stmt_in_bb ( gimple_stmt_iterator old_gsi,
gimple_stmt_iterator new_gsi )
private
Call post_new_stmt for each new statement that has been added
to the current BB.  OLD_GSI is the statement iterator before the BB
changes ocurred.  NEW_GSI is the iterator which may contain new
statements.   

References gsi_bb(), gsi_end_p(), gsi_next(), gsi_start_bb(), gsi_stmt(), and substitute_and_fold_engine::post_new_stmt().

Referenced by before_dom_children().

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

◆ dceworklist

bitmap substitute_and_fold_dom_walker::dceworklist

◆ 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

◆ need_ab_cleanup

bitmap substitute_and_fold_dom_walker::need_ab_cleanup

◆ need_eh_cleanup

bitmap substitute_and_fold_dom_walker::need_eh_cleanup

◆ something_changed

bool substitute_and_fold_dom_walker::something_changed

Referenced by before_dom_children().

◆ stmts_to_fixup

vec<gimple *> substitute_and_fold_dom_walker::stmts_to_fixup

◆ STOP

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

◆ substitute_and_fold_engine

class substitute_and_fold_engine* substitute_and_fold_dom_walker::substitute_and_fold_engine

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