GCC Middle and Back End API Reference
|
Data Fields | |
struct expr * | expr |
rtx | pattern |
rtx | pattern_regs |
rtx | loads |
rtx | stores |
struct ls_expr * | next |
int | invalid |
int | index |
unsigned int | hash_index |
rtx | reaching_reg |
This is a list of expressions which are MEMs and will be used by load or store motion. Load motion tracks MEMs which aren't killed by anything except itself, i.e. loads and stores to a single location. We can then allow movement of these MEM refs with a little special allowance. (all stores copy the same value to the reaching reg used for the loads). This means all values used to store into memory must have no side effects so we can re-issue the setter value.
struct expr* ls_expr::expr |
Referenced by ldst_entry(), and trim_ld_motion_mems().
unsigned int ls_expr::hash_index |
Referenced by ldst_entry(), and trim_ld_motion_mems().
int ls_expr::index |
Referenced by ldst_entry(), and print_ldst_list().
int ls_expr::invalid |
Referenced by compute_ld_motion_mems(), invalidate_any_buried_refs(), ldst_entry(), and trim_ld_motion_mems().
rtx ls_expr::loads |
Referenced by compute_ld_motion_mems(), free_ldst_entry(), ldst_entry(), and print_ldst_list().
struct ls_expr* ls_expr::next |
Referenced by free_ld_motion_mems(), ldst_entry(), print_ldst_list(), and trim_ld_motion_mems().
rtx ls_expr::pattern |
rtx ls_expr::pattern_regs |
Referenced by ldst_entry().
rtx ls_expr::reaching_reg |
Referenced by ldst_entry().
rtx ls_expr::stores |
Referenced by compute_ld_motion_mems(), free_ldst_entry(), ldst_entry(), print_ldst_list(), and update_ld_motion_stores().