GCC Middle and Back End API Reference
redirection_data Struct Reference
Inheritance diagram for redirection_data:
Collaboration diagram for redirection_data:

Public Types

typedef redirection_data value_type
typedef redirection_data compare_type

Static Public Member Functions

static hashval_t hash (const value_type *)
static int equal (const value_type *, const compare_type *)
static void remove (redirection_data *p)

Data Fields

basic_block dup_block
vec< jump_thread_edge * > * path
struct elincoming_edges

Detailed Description

   Main data structure recording information regarding B's duplicate
   blocks.  
   We need to efficiently record the unique thread destinations of this
   block and specific information associated with those destinations.  We
   may have many incoming edges threaded to the same outgoing edge.  This
   can be naturally implemented with a hash table.  

Member Typedef Documentation

     hash_table support.  

Member Function Documentation

int redirection_data::equal ( const value_type p1,
const compare_type p2 
)
inlinestatic
   Given two hash table entries, return true if they have the same
   jump threading path.  
hashval_t redirection_data::hash ( const value_type p)
inlinestatic
   Simple hashing function.  For any given incoming edge E, we're going
   to be most concerned with the final destination of its jump thread
   path.  So hash on the block index of the final edge in the path.  
static void typed_free_remove< redirection_data >::remove ( redirection_data p)
inlinestaticinherited
   Remove with free.  

Field Documentation

basic_block redirection_data::dup_block
     A duplicate of B with the trailing control statement removed and which
     targets a single successor of B.  

Referenced by create_block_for_threading(), and ssa_fix_duplicate_block_edges().

struct el* redirection_data::incoming_edges
     A list of incoming edges which we want to thread to the
     same path.  

Referenced by create_block_for_threading(), and lookup_redirection_data().

vec<jump_thread_edge *>* redirection_data::path
     The jump threading path.  

Referenced by copy_phi_args(), and create_block_for_threading().


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