|
GCC Middle and Back End API Reference
|


Public Types | |
| typedef cselib_val | value_type |
| typedef rtx_def | compare_type |
Static Public Member Functions | |
| static hashval_t | hash (const value_type *) |
| static bool | equal (const value_type *, const compare_type *) |
| static void | remove (cselib_val *p) |
There are three ways in which cselib can look up an rtx:
- for a REG, the reg_values table (which is indexed by regno) is used
- for a MEM, we recursively look up its address and then follow the
addr_list of that value
- for everything else, we compute a hash value and go through the hash
table. Since different rtx's can still have the same hash value,
this involves walking the table entries for a given value and comparing
the locations of the entries with the rtx we are looking up. | typedef rtx_def cselib_hasher::compare_type |
| typedef cselib_val cselib_hasher::value_type |
|
inlinestatic |
The equality test for our hash table. The first argument V is a table element (i.e. a cselib_val), while the second arg X is an rtx. We know that all callers of htab_find_slot_with_hash will wrap CONST_INTs into a CONST of an appropriate mode.
References find_slot_memmode, elt_loc_list::loc, cselib_val_struct::locs, elt_loc_list::next, promote_debug_loc(), rtx_equal_for_cselib_1(), and cselib_val_struct::val_rtx.
|
inlinestatic |
The hash function for our hash table. The value is always computed with cselib_hash_rtx when adding an element; this function just extracts the hash value from a cselib_val structure.
References cselib_val_struct::hash.
|
inlinestaticinherited |
Remove doing nothing.