diff options
author | Kenneth Zadeck <zadeck@naturalbridge.com> | 2006-01-21 14:58:40 +0000 |
---|---|---|
committer | Kenneth Zadeck <zadeck@gcc.gnu.org> | 2006-01-21 14:58:40 +0000 |
commit | 30cb87a09beeca0cbdee7347c2d993d1b90446d2 (patch) | |
tree | 64b96c5e14360cf5781d231fca9c461727ae0ea7 /gcc/df.h | |
parent | 68ea355b5d9b51b994e0780d8392f7542262072f (diff) | |
download | gcc-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.h | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -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. */ |