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: