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

Public Member Functions

 uncprop_dom_walker (cdi_direction direction)
 ~uncprop_dom_walker ()
virtual void before_dom_children (basic_block)
virtual void after_dom_children (basic_block)
void walk (basic_block)

Private Attributes

vec< treem_equiv_stack

Constructor & Destructor Documentation

uncprop_dom_walker::uncprop_dom_walker ( cdi_direction  direction)
inline
uncprop_dom_walker::~uncprop_dom_walker ( )
inline

Member Function Documentation

void uncprop_dom_walker::after_dom_children ( basic_block  bb)
virtual
   We have finished processing the dominator children of BB, perform
   any finalization actions in preparation for leaving this node in
   the dominator tree.  
     Pop the topmost value off the equiv stack.  
     If that value was non-null, then pop the topmost equivalency off
     its equivalency stack.  

Reimplemented from dom_walker.

References edge_def::aux, edge_equivalency::lhs, record_equiv(), and edge_equivalency::rhs.

void uncprop_dom_walker::before_dom_children ( basic_block  )
virtual
     Function to call before the recursive walk of the dominator children.  
     If this block is dominated by a single incoming edge and that edge
     has an equivalency, then record the equivalency and push the
     VALUE onto EQUIV_STACK.  Else push a NULL entry on EQUIV_STACK.  

Reimplemented from dom_walker.

References execute(), gate_uncprop(), and tree_ssa_uncprop().

void dom_walker::walk ( basic_block  bb)
inherited
     Walk the dominator tree.  
   Recursively walk the dominator tree.
   BB is the basic block we are currently visiting.  
         Don't worry about unreachable blocks.  
             Callback for subclasses to do custom things before we have walked
             the dominator children, but before we walk statements.  
             Mark the current BB to be popped out of the recursion stack
             once children are processed.  
         NULL is used to mark pop operations in the recursion stack.  
             Callback allowing subclasses to do custom things after we have
             walked dominator children, but before we walk statements.  

References bb_postorder, free(), inverted_post_order_compute(), and postorder_num.


Field Documentation

vec<tree> uncprop_dom_walker::m_equiv_stack
private
     As we enter each block we record the value for any edge equivalency
     leading to this block.  If no such edge equivalency exists, then we
     record NULL.  These equivalences are live until we leave the dominator
     subtree rooted at the block where we record the equivalency.  

Referenced by record_equiv(), and single_incoming_edge_ignoring_loop_edges().


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