summaryrefslogtreecommitdiff
path: root/gcc/df.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/df.h')
-rw-r--r--gcc/df.h18
1 files changed, 16 insertions, 2 deletions
diff --git a/gcc/df.h b/gcc/df.h
index e59ae126f2e..e7031d0bb2f 100644
--- a/gcc/df.h
+++ b/gcc/df.h
@@ -239,6 +239,9 @@ typedef void (*df_dump_problem_function) (FILE *);
/* Function to dump top or bottom of basic block results to FILE. */
typedef void (*df_dump_bb_problem_function) (basic_block, FILE *);
+/* Function to dump before or after an insn to FILE. */
+typedef void (*df_dump_insn_problem_function) (const_rtx, FILE *);
+
/* Function to dump top or bottom of basic block results to FILE. */
typedef void (*df_verify_solution_start) (void);
@@ -268,6 +271,8 @@ struct df_problem {
df_dump_problem_function dump_start_fun;
df_dump_bb_problem_function dump_top_fun;
df_dump_bb_problem_function dump_bottom_fun;
+ df_dump_insn_problem_function dump_insn_top_fun;
+ df_dump_insn_problem_function dump_insn_bottom_fun;
df_verify_solution_start verify_start_fun;
df_verify_solution_end verify_end_fun;
struct df_problem *dependent_problem;
@@ -463,7 +468,12 @@ enum df_changeable_flags
rescans to be batched. */
DF_DEFER_INSN_RESCAN = 1 << 5,
- DF_VERIFY_SCHEDULED = 1 << 6
+ /* Compute the reaching defs problem as "live and reaching defs" (LR&RD).
+ A DEF is reaching and live at insn I if DEF reaches I and REGNO(DEF)
+ is in LR_IN of the basic block containing I. */
+ DF_RD_PRUNE_DEAD_DEFS = 1 << 6,
+
+ DF_VERIFY_SCHEDULED = 1 << 7
};
/* Two of these structures are inline in df, one for the uses and one
@@ -773,7 +783,9 @@ struct df_scan_bb_info
/* Reaching definitions. All bitmaps are indexed by the id field of
- the ref except sparse_kill which is indexed by regno. */
+ the ref except sparse_kill which is indexed by regno. For the
+ LR&RD problem, the kill set is not complete: It does not contain
+ DEFs killed because the set register has died in the LR set. */
struct df_rd_bb_info
{
/* Local sets to describe the basic blocks. */
@@ -918,6 +930,8 @@ extern void df_dump_region (FILE *);
extern void df_dump_start (FILE *);
extern void df_dump_top (basic_block, FILE *);
extern void df_dump_bottom (basic_block, FILE *);
+extern void df_dump_insn_top (const_rtx, FILE *);
+extern void df_dump_insn_bottom (const_rtx, FILE *);
extern void df_refs_chain_dump (df_ref *, bool, FILE *);
extern void df_regs_chain_dump (df_ref, FILE *);
extern void df_insn_debug (rtx, bool, FILE *);