GCC Middle and Back End API Reference
|
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 el * | incoming_edges |
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.
hash_table support.
|
inlinestatic |
Given two hash table entries, return true if they have the same jump threading path.
|
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.
|
inlinestaticinherited |
Remove with free.
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().