GCC Middle and Back End API Reference
|
Data Fields | |
rtx | rtx_base |
int | id |
bool | process_globally |
bool | frame_related |
rtx | base_mem |
rtx | canon_base_addr |
bitmap | store1_n |
bitmap | store1_p |
bitmap | store2_n |
bitmap | store2_p |
bitmap | escaped_n |
bitmap | escaped_p |
bitmap | group_kill |
int * | offset_map_n |
int * | offset_map_p |
int | offset_map_size_n |
int | offset_map_size_p |
There is a group_info for each rtx base that is used to reference memory. There are also not many of the rtx bases because they are very limited in scope.
rtx group_info::base_mem |
A mem wrapped around the base pointer for the group in order to do read dependency. It must be given BLKmode in order to encompass all the possible offsets from the base.
rtx group_info::canon_base_addr |
Canonized version of base_mem's address.
bitmap group_info::escaped_n |
These bitmaps keep track of offsets in this group escape this function. An offset escapes if it corresponds to a named variable whose addressable flag is set.
Referenced by delete_dead_store_insn().
bitmap group_info::escaped_p |
Referenced by delete_dead_store_insn().
bool group_info::frame_related |
True if the base of this group is either the frame_pointer or hard_frame_pointer.
Referenced by dse_step2_init(), and scan_reads_nospill().
bitmap group_info::group_kill |
The positions in this bitmap have the same assignments as the in, out, gen and kill bitmaps. This bitmap is all zeros except for the positions that are occupied by stores for this group.
Referenced by dse_step2_init(), dse_step2_nospill(), and scan_reads_nospill().
int group_info::id |
The sequential id of the base. This allows us to have a canonical ordering of these that is not based on addresses.
int* group_info::offset_map_n |
The offset_map is used to map the offsets from this base into positions in the global bitmaps. It is only created after all of the all of stores have been scanned and we know which ones we care about.
int * group_info::offset_map_p |
int group_info::offset_map_size_n |
Referenced by delete_dead_store_insn().
int group_info::offset_map_size_p |
Referenced by delete_dead_store_insn().
bool group_info::process_globally |
True if there are any positions that are to be processed globally.
Referenced by dse_step2_init(), and scan_reads_nospill().
rtx group_info::rtx_base |
The actual base of the address.
bitmap group_info::store1_n |
These two sets of two bitmaps are used to keep track of how many stores are actually referencing that position from this base. We only do this for rtx bases as this will be used to assign positions in the bitmaps for the global problem. Bit N is set in store1 on the first store for offset N. Bit N is set in store2 for the second store to offset N. This is all we need since we only care about offsets that have two or more stores for them. The "_n" suffix is for offsets less than 0 and the "_p" suffix is for 0 and greater offsets. There is one special case here, for stores into the stack frame, we will or store1 into store2 before deciding which stores look at globally. This is because stores to the stack frame that have no other reads before the end of the function can also be deleted.
Referenced by delete_dead_store_insn().
bitmap group_info::store1_p |
Referenced by delete_dead_store_insn().
bitmap group_info::store2_n |
Referenced by delete_dead_store_insn().
bitmap group_info::store2_p |
Referenced by delete_dead_store_insn().