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

Data Fields

bitmap_head sparse_invalidated_by_eh
 
bitmap_head dense_invalidated_by_eh
 
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_eh and
sparse_invalidated_by_eh 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

◆ dense_invalidated_by_eh

bitmap_head df_rd_problem_data::dense_invalidated_by_eh

◆ rd_bitmaps

bitmap_obstack df_rd_problem_data::rd_bitmaps

◆ sparse_invalidated_by_eh

bitmap_head df_rd_problem_data::sparse_invalidated_by_eh

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