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


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: