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

Data Fields

bitmap_head sparse_invalidated_by_call
bitmap_head dense_invalidated_by_call
bitmap_obstack rd_bitmaps

Detailed Description

   This problem plays a large number of games for the sake of
   efficiency.

   1) The order of the bits in the bitvectors.  After the scanning
   phase, all of the defs are sorted.  All of the defs for the reg 0
   are first, followed by all defs for reg 1 and so on.

   2) There are two kill sets, one if the number of defs is less or
   equal to DF_SPARSE_THRESHOLD and another if the number of defs is
   greater.

   <= : Data is built directly in the kill set.

   > : One level of indirection is used to keep from generating long
   strings of 1 bits in the kill sets.  Bitvectors that are indexed
   by the regnum are used to represent that there is a killing def
   for the register.  The confluence and transfer functions use
   these along with the bitmap_clear_range call to remove ranges of
   bits without actually generating a knockout vector.

   The kill and sparse_kill and the dense_invalidated_by_call and
   sparse_invalidated_by_call both play this game.  
   Private data used to compute the solution for this problem.  These
   data structures are not accessible outside of this module.  

Field Documentation

bitmap_head df_rd_problem_data::dense_invalidated_by_call
     The set of defs to regs invalidate by call for rd.  

Referenced by df_rd_alloc().

bitmap_obstack df_rd_problem_data::rd_bitmaps
     An obstack for the bitmaps we need for this problem.  

Referenced by df_rd_alloc().

bitmap_head df_rd_problem_data::sparse_invalidated_by_call
     The set of defs to regs invalidated by call.  

Referenced by df_rd_alloc().


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