aboutsummaryrefslogtreecommitdiff
path: root/gcc/df.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/df.h')
-rw-r--r--gcc/df.h52
1 files changed, 20 insertions, 32 deletions
diff --git a/gcc/df.h b/gcc/df.h
index 01a4d10..a585b3b 100644
--- a/gcc/df.h
+++ b/gcc/df.h
@@ -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;
}