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

Public Types

typedef Typevalue_type
 
typedef Typecompare_type
 

Static Public Member Functions

static hashval_t hash (const redirection_data *)
 
static int equal (const redirection_data *, const redirection_data *)
 
static hashval_t hash (const value_type &)
 
static bool equal (const value_type &existing, const compare_type &candidate)
 
static void mark_deleted (Type *&)
 
static void mark_empty (Type *&)
 
static bool is_deleted (Type *)
 
static bool is_empty (Type *)
 
static void remove (Type *p)
 

Data Fields

basic_block dup_blocks [2]
 
vec< jump_thread_edge * > * path
 
struct elincoming_edges
 

Static Public Attributes

static const bool empty_zero_p = true
 

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

◆ compare_type

template<typename Type >
typedef Type* pointer_hash< Type >::compare_type
inherited

◆ value_type

template<typename Type >
typedef Type* pointer_hash< Type >::value_type
inherited

Member Function Documentation

◆ equal() [1/2]

int redirection_data::equal ( const redirection_data * p1,
const redirection_data * p2 )
inlinestatic
Given two hash table entries, return true if they have the same
jump threading path.   

References ggc_alloc(), and i.

◆ equal() [2/2]

template<typename Type >
bool pointer_hash< Type >::equal ( const value_type & existing,
const compare_type & candidate )
inlinestaticinherited

References candidate(), and ggc_alloc().

◆ hash() [1/2]

hashval_t redirection_data::hash ( const redirection_data * 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.   

References path.

◆ hash() [2/2]

template<typename Type >
hashval_t pointer_hash< Type >::hash ( const value_type & candidate)
inlinestaticinherited

References candidate(), and ggc_alloc().

◆ is_deleted()

template<typename Type >
bool pointer_hash< Type >::is_deleted ( Type * e)
inlinestaticinherited

References ggc_alloc().

◆ is_empty()

template<typename Type >
bool pointer_hash< Type >::is_empty ( Type * e)
inlinestaticinherited

References NULL.

◆ mark_deleted()

template<typename Type >
void pointer_hash< Type >::mark_deleted ( Type *& e)
inlinestaticinherited

References ggc_alloc().

◆ mark_empty()

template<typename Type >
void pointer_hash< Type >::mark_empty ( Type *& e)
inlinestaticinherited

References NULL.

◆ remove()

template<typename Type >
void typed_free_remove< Type >::remove ( Type * p)
inlinestaticinherited
Remove with free.   

References free().

Field Documentation

◆ dup_blocks

basic_block redirection_data::dup_blocks[2]

◆ empty_zero_p

template<typename Type >
const bool pointer_hash< Type >::empty_zero_p = true
staticinherited

◆ incoming_edges

struct el* redirection_data::incoming_edges

◆ path

vec<jump_thread_edge *>* redirection_data::path

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