GCC Middle and Back End API Reference
df_d Struct Reference

#include <df.h>

Collaboration diagram for df_d:

Data Fields

struct dataflowproblems_in_order [DF_LAST_PROBLEM_PLUS1]
struct dataflowproblems_by_index [DF_LAST_PROBLEM_PLUS1]
bitmap blocks_to_analyze
struct df_ref_info def_info
struct df_ref_info use_info
struct df_reg_info ** def_regs
struct df_reg_info ** use_regs
struct df_reg_info ** eq_use_regs
unsigned int regs_size
unsigned int regs_inited
struct df_insn_info ** insns
unsigned int insns_size
int num_problems_defined
bitmap_head hardware_regs_used
bitmap_head regular_block_artificial_uses
bitmap_head eh_block_artificial_uses
bitmap entry_block_defs
bitmap exit_block_uses
bitmap_head insns_to_delete
bitmap_head insns_to_rescan
bitmap_head insns_to_notes_rescan
int * postorder
int * postorder_inverted
int n_blocks
int n_blocks_inverted
unsigned int * hard_regs_live_count
unsigned int ref_order
int changeable_flags: 8
bool analyze_subset
bool redo_entry_and_exit

Field Documentation

bool df_d::analyze_subset
     If this is true, then only a subset of the blocks of the program
     is considered to compute the solutions of dataflow problems.  
bitmap df_d::blocks_to_analyze
     If not NULL, this subset of blocks of the program to be
     considered for analysis.  At certain times, this will contain all
     the blocks in the function so it cannot be used as an indicator
     of if we are analyzing a subset.  See analyze_subset.  

Referenced by debug_regset(), and df_clear_flags().

int df_d::changeable_flags
     Problem specific control information.  This is a combination of
     enum df_changeable_flags values.  

Referenced by df_bb_regno_first_def_find(), df_chain_finalize(), df_chain_remove_problem(), df_insn_rescan_debug_internal(), df_lr_init(), df_set_flags(), and split_live_ranges_for_shrink_wrap().

struct df_ref_info df_d::def_info
     The following information is really the problem data for the
     scanning instance but it is used too often by the other problems
     to keep getting it from there.  

Referenced by df_free_ref(), df_grow_insn_info(), and df_scan_add_problem().

struct df_reg_info** df_d::def_regs
     The following three arrays are allocated in parallel.   They contain
     the sets of refs of each type for each reg.  

Referenced by df_scan_add_problem().

bitmap_head df_d::eh_block_artificial_uses
     The set of hard regs that are in the artificial uses at the end
     of a basic block that has an EH pred.  

Referenced by df_grow_insn_info().

bitmap df_d::entry_block_defs
     The set of hardware registers live on entry to the function.  

Referenced by df_get_eh_block_artificial_uses(), and df_grow_insn_info().

struct df_reg_info** df_d::eq_use_regs

Referenced by df_scan_add_problem().

bitmap df_d::exit_block_uses
unsigned int* df_d::hard_regs_live_count
     An array [FIRST_PSEUDO_REGISTER], indexed by regno, of the number
     of refs that qualify as being real hard regs uses.  Artificial
     uses and defs as well as refs in eq notes are ignored.  If the
     ref is a def, it cannot be a MAY_CLOBBER def.  If the ref is a
     use, it cannot be the emim_reg_set or be the frame or arg pointer
     register.  Uses in debug insns are ignored.

     IT IS NOT ACCEPTABLE TO MANUALLY CHANGE THIS ARRAY.  This array
     always reflects the actual number of refs in the insn stream that
     satisfy the above criteria.  

Referenced by df_mw_compare().

bitmap_head df_d::hardware_regs_used

Referenced by df_scan_free().

struct df_insn_info** df_d::insns
unsigned int df_d::insns_size
bitmap_head df_d::insns_to_delete
     Insns to delete, rescan or reprocess the notes at next
     df_rescan_all or df_process_deferred_rescans. 

Referenced by df_insn_rescan_debug_internal(), and df_ref_chain_delete().

bitmap_head df_d::insns_to_notes_rescan
bitmap_head df_d::insns_to_rescan
int df_d::n_blocks

Referenced by df_lr_confluence_0().

int df_d::n_blocks_inverted
int* df_d::postorder

Referenced by df_lr_confluence_0().

int* df_d::postorder_inverted
struct dataflow* df_d::problems_by_index[DF_LAST_PROBLEM_PLUS1]

Referenced by df_finish_pass().

struct dataflow* df_d::problems_in_order[DF_LAST_PROBLEM_PLUS1]
     The set of problems to be solved is stored in two arrays.  In
     PROBLEMS_IN_ORDER, the problems are stored in the order that they
     are solved.  This is an internally dense array that may have
     nulls at the end of it.  In PROBLEMS_BY_INDEX, the problem is
     stored by the value in df_problem.id.  These are used to access
     the problem local data without having to search the first
     array.  

Referenced by df_dump_region(), df_finish_pass(), df_get_bb_dirty(), df_get_bb_info(), df_mark_solutions_dirty(), df_print_word_regset(), df_remove_problem(), and df_simple_dataflow().

bool df_d::redo_entry_and_exit
     True if someone added or deleted something from regs_ever_live so
     that the entry and exit blocks need be reprocessed.  
unsigned int df_d::ref_order
     This counter provides a way to totally order refs without using
     addresses.  It is incremented whenever a ref is created.  
unsigned int df_d::regs_inited
unsigned int df_d::regs_size

Referenced by df_scan_add_problem().

bitmap_head df_d::regular_block_artificial_uses
     The set of hard regs that are in the artificial uses at the end
     of a regular basic block.  

Referenced by df_grow_insn_info(), and df_scan_free().

struct df_reg_info** df_d::use_regs

Referenced by df_scan_add_problem().


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