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

Public Member Functions

 strlen_dom_walker (cdi_direction direction)
virtual void before_dom_children (basic_block)
virtual void after_dom_children (basic_block)
void walk (basic_block)

Constructor & Destructor Documentation

strlen_dom_walker::strlen_dom_walker ( cdi_direction  direction)
inline

Member Function Documentation

void strlen_dom_walker::after_dom_children ( basic_block  bb)
virtual

Callback for walk_dominator_tree. Free strinfo vector if it is owned by the current bb, clear bb->aux.

Reimplemented from dom_walker.

void strlen_dom_walker::before_dom_children ( basic_block  bb)
virtual

Callback for walk_dominator_tree. Attempt to optimize various string ops by remembering string lenths pointed by pointer SSA_NAMEs.

                If there were too many vdefs in between immediate
                dominator and current bb, invalidate everything.
                If stridx_to_strinfo has been unshared, we need
                to free it, otherwise just set it to NULL.   
 If all PHI arguments have the same string index, the PHI result
 has it as well.   


 Attempt to optimize individual statements.   

Reimplemented from dom_walker.

References basic_block_def::aux, free_strinfo(), NULL, si, vec_free(), vec_safe_iterate(), and vec_safe_length().

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, inverted_post_order_compute(), last_basic_block, n_basic_blocks, and postorder_num.


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