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: