diff options
Diffstat (limited to 'gcc/df.h')
-rw-r--r-- | gcc/df.h | 52 |
1 files changed, 20 insertions, 32 deletions
@@ -52,7 +52,7 @@ union df_ref_d; #define DF_LIVE 2 /* Live Registers & Uninitialized Registers */ #define DF_RD 3 /* Reaching Defs. */ #define DF_CHAIN 4 /* Def-Use and/or Use-Def Chains. */ -#define DF_BYTE_LR 5 /* Subreg tracking lr. */ +#define DF_WORD_LR 5 /* Subreg tracking lr. */ #define DF_NOTE 6 /* REG_DEF and REG_UNUSED notes. */ #define DF_MD 7 /* Multiple Definitions. */ @@ -66,14 +66,6 @@ enum df_flow_dir DF_BACKWARD }; -/* Used in the byte scanning to determine if may or must info is to be - returned. */ -enum df_mm - { - DF_MM_MAY, - DF_MM_MUST - }; - /* Descriminator for the various df_ref types. */ enum df_ref_class {DF_REF_BASE, DF_REF_ARTIFICIAL, DF_REF_REGULAR, DF_REF_EXTRACT}; @@ -624,7 +616,7 @@ struct df_d #define DF_RD_BB_INFO(BB) (df_rd_get_bb_info((BB)->index)) #define DF_LR_BB_INFO(BB) (df_lr_get_bb_info((BB)->index)) #define DF_LIVE_BB_INFO(BB) (df_live_get_bb_info((BB)->index)) -#define DF_BYTE_LR_BB_INFO(BB) (df_byte_lr_get_bb_info((BB)->index)) +#define DF_WORD_LR_BB_INFO(BB) (df_word_lr_get_bb_info((BB)->index)) #define DF_MD_BB_INFO(BB) (df_md_get_bb_info((BB)->index)) /* Most transformations that wish to use live register analysis will @@ -641,8 +633,8 @@ struct df_d /* These macros are used by passes that are not tolerant of uninitialized variables. This intolerance should eventually be fixed. */ -#define DF_BYTE_LR_IN(BB) (&DF_BYTE_LR_BB_INFO(BB)->in) -#define DF_BYTE_LR_OUT(BB) (&DF_BYTE_LR_BB_INFO(BB)->out) +#define DF_WORD_LR_IN(BB) (&DF_WORD_LR_BB_INFO(BB)->in) +#define DF_WORD_LR_OUT(BB) (&DF_WORD_LR_BB_INFO(BB)->out) /* Macros to access the elements within the ref structure. */ @@ -859,9 +851,11 @@ struct df_live_bb_info /* Live registers, a backwards dataflow problem. These bitmaps are -indexed by the df_byte_lr_offset array which is indexed by pseudo. */ + indexed by 2 * regno for each pseudo and have two entries for each + pseudo. Only pseudos that have a size of 2 * UNITS_PER_WORD are + meaningfully tracked. */ -struct df_byte_lr_bb_info +struct df_word_lr_bb_info { /* Local sets to describe the basic blocks. */ bitmap_head def; /* The set of registers set in this block @@ -883,7 +877,7 @@ extern struct df_d *df; #define df_lr (df->problems_by_index[DF_LR]) #define df_live (df->problems_by_index[DF_LIVE]) #define df_chain (df->problems_by_index[DF_CHAIN]) -#define df_byte_lr (df->problems_by_index[DF_BYTE_LR]) +#define df_word_lr (df->problems_by_index[DF_WORD_LR]) #define df_note (df->problems_by_index[DF_NOTE]) #define df_md (df->problems_by_index[DF_MD]) @@ -933,7 +927,7 @@ extern df_ref df_find_use (rtx, rtx); extern bool df_reg_used (rtx, rtx); extern void df_worklist_dataflow (struct dataflow *,bitmap, int *, int); extern void df_print_regset (FILE *file, bitmap r); -extern void df_print_byte_regset (FILE *file, bitmap r); +extern void df_print_word_regset (FILE *file, bitmap r); extern void df_dump (FILE *); extern void df_dump_region (FILE *); extern void df_dump_start (FILE *); @@ -972,13 +966,12 @@ extern void df_live_verify_transfer_functions (void); extern void df_live_add_problem (void); extern void df_live_set_all_dirty (void); extern void df_chain_add_problem (unsigned int); -extern void df_byte_lr_add_problem (void); -extern int df_byte_lr_get_regno_start (unsigned int); -extern int df_byte_lr_get_regno_len (unsigned int); -extern void df_byte_lr_simulate_defs (rtx, bitmap); -extern void df_byte_lr_simulate_uses (rtx, bitmap); -extern void df_byte_lr_simulate_artificial_refs_at_top (basic_block, bitmap); -extern void df_byte_lr_simulate_artificial_refs_at_end (basic_block, bitmap); +extern void df_word_lr_add_problem (void); +extern bool df_word_lr_mark_ref (df_ref, bool, bitmap); +extern bool df_word_lr_simulate_defs (rtx, bitmap); +extern void df_word_lr_simulate_uses (rtx, bitmap); +extern void df_word_lr_simulate_artificial_refs_at_top (basic_block, bitmap); +extern void df_word_lr_simulate_artificial_refs_at_end (basic_block, bitmap); extern void df_note_add_problem (void); extern void df_md_add_problem (void); extern void df_md_simulate_artificial_defs_at_top (basic_block, bitmap); @@ -1029,11 +1022,6 @@ extern void df_compute_regs_ever_live (bool); extern bool df_read_modify_subreg_p (rtx); extern void df_scan_verify (void); -/* Functions defined in df-byte-scan.c. */ -extern bool df_compute_accessed_bytes (df_ref, enum df_mm, - unsigned int *, unsigned int *); - - /* Get basic block info. */ static inline struct df_scan_bb_info * @@ -1081,11 +1069,11 @@ df_live_get_bb_info (unsigned int index) return NULL; } -static inline struct df_byte_lr_bb_info * -df_byte_lr_get_bb_info (unsigned int index) +static inline struct df_word_lr_bb_info * +df_word_lr_get_bb_info (unsigned int index) { - if (index < df_byte_lr->block_info_size) - return &((struct df_byte_lr_bb_info *) df_byte_lr->block_info)[index]; + if (index < df_word_lr->block_info_size) + return &((struct df_word_lr_bb_info *) df_word_lr->block_info)[index]; else return NULL; } |