GCC Middle and Back End API Reference
group_info Struct Reference
Collaboration diagram for group_info:

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

Detailed Description

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.


Field Documentation

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().


The documentation for this struct was generated from the following file: