summaryrefslogtreecommitdiff
path: root/gcc/df.h
diff options
context:
space:
mode:
authorKenneth Zadeck <zadeck@naturalbridge.com>2006-01-21 14:58:40 +0000
committerKenneth Zadeck <zadeck@gcc.gnu.org>2006-01-21 14:58:40 +0000
commit30cb87a09beeca0cbdee7347c2d993d1b90446d2 (patch)
tree64b96c5e14360cf5781d231fca9c461727ae0ea7 /gcc/df.h
parent68ea355b5d9b51b994e0780d8392f7542262072f (diff)
downloadgcc-30cb87a09beeca0cbdee7347c2d993d1b90446d2.tar.gz
df-scan.c (problem_SCAN): Added NULL reset function.
2005-01-21 Kenneth Zadeck <zadeck@naturalbridge.com> * df-scan.c (problem_SCAN): Added NULL reset function. (df_scan_reset_blocks): Added code to call reset block function (df_bb_refs_delete) Fixed comment. (df_insn_refs_delete): Made tolerant of deleting non existent info for dataflow problems that need to be reset. * df-core.c (df_set_blocks): Ditto. * df.h (struct df_problem): Added reset_fun. * df-problems.c (problem_RU, problem_RD, problem_LR, problem_UR, problem_UREC, problem_CHAIN, problem_RI): Initialized reset_fun field. (df_chain_insn_reset, df_chain_bb_reset, df_chain_reset): New functions to clear out all references to def-use or use-def chains. From-SVN: r110066
Diffstat (limited to 'gcc/df.h')
-rw-r--r--gcc/df.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/df.h b/gcc/df.h
index a353d36ce11..f2e7bef787a 100644
--- a/gcc/df.h
+++ b/gcc/df.h
@@ -67,6 +67,14 @@ enum df_flow_dir
/* Allocate the problem specific data. */
typedef void (*df_alloc_function) (struct dataflow *, bitmap);
+/* This function is called if the problem has global data that needs
+ to be cleared when ever the set of blocks changes. The bitmap
+ contains the set of blocks that may require special attention.
+ This call is only made if some of the blocks are going to change.
+ If everything is to be deleted, the wholesale deletion mechanisms
+ apply. */
+typedef void (*df_reset_function) (struct dataflow *, bitmap);
+
/* Free the basic block info. Called from the block reordering code
to get rid of the blocks that have been squished down. */
typedef void (*df_free_bb_function) (struct dataflow *, basic_block, void *);
@@ -108,6 +116,7 @@ struct df_problem {
unsigned int id;
enum df_flow_dir dir; /* Dataflow direction. */
df_alloc_function alloc_fun;
+ df_reset_function reset_fun;
df_free_bb_function free_bb_fun;
df_local_compute_function local_compute_fun;
df_init_function init_fun;
@@ -216,7 +225,7 @@ struct df_ref
basic_block bb; /* Basic block containing the instruction. */
rtx insn; /* Insn containing ref. NB: THIS MAY BE NULL. */
rtx *loc; /* The location of the reg. */
- struct df_link *chain; /* Head of def-use, use-def or bi chain. */
+ struct df_link *chain; /* Head of def-use, use-def. */
unsigned int id; /* Location in table. */
enum df_ref_type type; /* Type of ref. */
enum df_ref_flags flags; /* Various flags. */