mirror of git://gcc.gnu.org/git/gcc.git
df.h (df_rd_bb_info, [...]): Embedd bitmap_head into the structure.
* df.h (df_rd_bb_info, df_md_bb_info, df_lr_bb_info, df_live_bb_info, df_byte_lr_bb_info): Embedd bitmap_head into the structure. (DF_LIVE_IN, DF_LIVE_OUT, DF_LR_IN, DF_LR_OUT, DF_BYTE_LR_IN, DF_BYTE_LR_OUT): Update for embedded bitmaps. * fwprop.c (single_def_use_enter_block): Likewise. * ddg.c (create_ddg_dep_from_intra_loop_link, add_cross_iteration_register_deps, build_inter_loop_deps): Likewise. * loop-iv.c (latch_dominating_def): Likewise. * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_bb_local_compute_process_def, df_rd_bb_local_compute_process_def, df_rd_init_solution, df_rd_init_solution, df_rd_transfer_function, df_rd_transfer_function, df_rd_top_dump, df_rd_bottom_dump): Update. (df_lr_free_bb_info, df_lr_alloc, df_lr_reset, df_lr_bb_local_compute, df_lr_bb_local_compute, df_lr_bb_local_compute, df_lr_bb_local_compute, df_lr_bb_local_compute, df_lr_local_compute, df_lr_init, df_lr_init, df_lr_confluence_0, df_lr_free, df_lr_top_dump, df_lr_bottom_dump, df_lr_verify_solution_start, df_lr_verify_solution_end, df_lr_verify_transfer_functions, df_lr_verify_transfer_functions, df_live_free_bb_info, df_live_alloc, df_live_reset, df_live_bb_local_compute, df_live_init, df_live_transfer_function, df_live_finalize, df_live_free, df_live_top_dump, df_live_bottom_dump, df_live_verify_solution_start, df_live_verify_solution_end, df_live_verify_transfer_functions, df_chain_create_bb, df_byte_lr_free_bb_info, df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute, df_byte_lr_bb_local_compute, df_byte_lr_bb_local_compute, df_byte_lr_bb_local_compute, df_byte_lr_bb_local_compute, df_byte_lr_local_compute, df_byte_lr_init, df_byte_lr_confluence_0, df_byte_lr_confluence_n, df_byte_lr_transfer_function, df_byte_lr_top_dump, df_byte_lr_bottom_dump, df_create_unused_note, df_note_bb_compute, df_md_free_bb_info, df_md_alloc, df_md_bb_local_compute_process_def, df_md_local_compute, df_md_reset, df_md_transfer_function, df_md_init, df_md_confluence_0, df_md_confluence_n, df_md_top_dump, df_md_bottom_dump): Update. (struct df_lr_problem_data): Embedd bitmap headers. From-SVN: r160268
This commit is contained in:
parent
fb340c3c7f
commit
b33a91c946
|
@ -1,3 +1,43 @@
|
|||
2010-06-04 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* df.h (df_rd_bb_info, df_md_bb_info, df_lr_bb_info, df_live_bb_info,
|
||||
df_byte_lr_bb_info): Embedd bitmap_head into the structure.
|
||||
(DF_LIVE_IN, DF_LIVE_OUT, DF_LR_IN, DF_LR_OUT, DF_BYTE_LR_IN,
|
||||
DF_BYTE_LR_OUT): Update for embedded bitmaps.
|
||||
* fwprop.c (single_def_use_enter_block): Likewise.
|
||||
* ddg.c (create_ddg_dep_from_intra_loop_link,
|
||||
add_cross_iteration_register_deps, build_inter_loop_deps): Likewise.
|
||||
* loop-iv.c (latch_dominating_def): Likewise.
|
||||
* df-problems.c (df_rd_free_bb_info, df_rd_alloc,
|
||||
df_rd_bb_local_compute_process_def, df_rd_bb_local_compute_process_def,
|
||||
df_rd_init_solution, df_rd_init_solution, df_rd_transfer_function,
|
||||
df_rd_transfer_function, df_rd_top_dump,
|
||||
df_rd_bottom_dump): Update.
|
||||
(df_lr_free_bb_info, df_lr_alloc, df_lr_reset, df_lr_bb_local_compute,
|
||||
df_lr_bb_local_compute, df_lr_bb_local_compute, df_lr_bb_local_compute,
|
||||
df_lr_bb_local_compute, df_lr_local_compute, df_lr_init, df_lr_init,
|
||||
df_lr_confluence_0, df_lr_free, df_lr_top_dump, df_lr_bottom_dump,
|
||||
df_lr_verify_solution_start, df_lr_verify_solution_end,
|
||||
df_lr_verify_transfer_functions, df_lr_verify_transfer_functions,
|
||||
df_live_free_bb_info, df_live_alloc, df_live_reset,
|
||||
df_live_bb_local_compute, df_live_init, df_live_transfer_function,
|
||||
df_live_finalize, df_live_free, df_live_top_dump, df_live_bottom_dump,
|
||||
df_live_verify_solution_start, df_live_verify_solution_end,
|
||||
df_live_verify_transfer_functions, df_chain_create_bb,
|
||||
df_byte_lr_free_bb_info, df_byte_lr_alloc, df_byte_lr_reset,
|
||||
df_byte_lr_bb_local_compute, df_byte_lr_bb_local_compute,
|
||||
df_byte_lr_bb_local_compute, df_byte_lr_bb_local_compute,
|
||||
df_byte_lr_bb_local_compute, df_byte_lr_local_compute, df_byte_lr_init,
|
||||
df_byte_lr_confluence_0, df_byte_lr_confluence_n,
|
||||
df_byte_lr_transfer_function, df_byte_lr_top_dump,
|
||||
df_byte_lr_bottom_dump, df_create_unused_note,
|
||||
df_note_bb_compute, df_md_free_bb_info, df_md_alloc,
|
||||
df_md_bb_local_compute_process_def, df_md_local_compute, df_md_reset,
|
||||
df_md_transfer_function, df_md_init, df_md_confluence_0,
|
||||
df_md_confluence_n,
|
||||
df_md_top_dump, df_md_bottom_dump): Update. (struct df_lr_problem_data):
|
||||
Embedd bitmap headers.
|
||||
|
||||
2010-06-04 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* dce.c (dce_process_block): Do not re-scan already marked instructions.
|
||||
|
|
|
@ -192,7 +192,7 @@ create_ddg_dep_from_intra_loop_link (ddg_ptr g, ddg_node_ptr src_node,
|
|||
first_def = df_bb_regno_first_def_find (g->bb, regno);
|
||||
gcc_assert (first_def);
|
||||
|
||||
if (bitmap_bit_p (bb_info->gen, DF_REF_ID (first_def)))
|
||||
if (bitmap_bit_p (&bb_info->gen, DF_REF_ID (first_def)))
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -263,7 +263,7 @@ add_cross_iteration_register_deps (ddg_ptr g, df_ref last_def)
|
|||
|
||||
#ifdef ENABLE_CHECKING
|
||||
if (DF_REF_ID (last_def) != DF_REF_ID (first_def))
|
||||
gcc_assert (!bitmap_bit_p (bb_info->gen, DF_REF_ID (first_def)));
|
||||
gcc_assert (!bitmap_bit_p (&bb_info->gen, DF_REF_ID (first_def)));
|
||||
#endif
|
||||
|
||||
/* Create inter-loop true dependences and anti dependences. */
|
||||
|
@ -338,7 +338,7 @@ build_inter_loop_deps (ddg_ptr g)
|
|||
rd_bb_info = DF_RD_BB_INFO (g->bb);
|
||||
|
||||
/* Find inter-loop register output, true and anti deps. */
|
||||
EXECUTE_IF_SET_IN_BITMAP (rd_bb_info->gen, 0, rd_num, bi)
|
||||
EXECUTE_IF_SET_IN_BITMAP (&rd_bb_info->gen, 0, rd_num, bi)
|
||||
{
|
||||
df_ref rd = DF_DEFS_GET (rd_num);
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
62
gcc/df.h
62
gcc/df.h
|
@ -626,20 +626,20 @@ struct df
|
|||
|
||||
/* Most transformations that wish to use live register analysis will
|
||||
use these macros. This info is the and of the lr and live sets. */
|
||||
#define DF_LIVE_IN(BB) (DF_LIVE_BB_INFO(BB)->in)
|
||||
#define DF_LIVE_OUT(BB) (DF_LIVE_BB_INFO(BB)->out)
|
||||
#define DF_LIVE_IN(BB) (&DF_LIVE_BB_INFO(BB)->in)
|
||||
#define DF_LIVE_OUT(BB) (&DF_LIVE_BB_INFO(BB)->out)
|
||||
|
||||
/* These macros are used by passes that are not tolerant of
|
||||
uninitialized variables. This intolerance should eventually
|
||||
be fixed. */
|
||||
#define DF_LR_IN(BB) (DF_LR_BB_INFO(BB)->in)
|
||||
#define DF_LR_OUT(BB) (DF_LR_BB_INFO(BB)->out)
|
||||
#define DF_LR_IN(BB) (&DF_LR_BB_INFO(BB)->in)
|
||||
#define DF_LR_OUT(BB) (&DF_LR_BB_INFO(BB)->out)
|
||||
|
||||
/* 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_BYTE_LR_IN(BB) (&DF_BYTE_LR_BB_INFO(BB)->in)
|
||||
#define DF_BYTE_LR_OUT(BB) (&DF_BYTE_LR_BB_INFO(BB)->out)
|
||||
|
||||
/* Macros to access the elements within the ref structure. */
|
||||
|
||||
|
@ -796,13 +796,13 @@ struct df_scan_bb_info
|
|||
struct df_rd_bb_info
|
||||
{
|
||||
/* Local sets to describe the basic blocks. */
|
||||
bitmap kill;
|
||||
bitmap sparse_kill;
|
||||
bitmap gen; /* The set of defs generated in this block. */
|
||||
bitmap_head kill;
|
||||
bitmap_head sparse_kill;
|
||||
bitmap_head gen; /* The set of defs generated in this block. */
|
||||
|
||||
/* The results of the dataflow problem. */
|
||||
bitmap in; /* At the top of the block. */
|
||||
bitmap out; /* At the bottom of the block. */
|
||||
bitmap_head in; /* At the top of the block. */
|
||||
bitmap_head out; /* At the bottom of the block. */
|
||||
};
|
||||
|
||||
|
||||
|
@ -812,13 +812,13 @@ struct df_rd_bb_info
|
|||
struct df_md_bb_info
|
||||
{
|
||||
/* Local sets to describe the basic blocks. */
|
||||
bitmap gen; /* Partial/conditional definitions live at BB out. */
|
||||
bitmap kill; /* Other definitions that are live at BB out. */
|
||||
bitmap init; /* Definitions coming from dominance frontier edges. */
|
||||
bitmap_head gen; /* Partial/conditional definitions live at BB out. */
|
||||
bitmap_head kill; /* Other definitions that are live at BB out. */
|
||||
bitmap_head init; /* Definitions coming from dominance frontier edges. */
|
||||
|
||||
/* The results of the dataflow problem. */
|
||||
bitmap in; /* Just before the block itself. */
|
||||
bitmap out; /* At the bottom of the block. */
|
||||
bitmap_head in; /* Just before the block itself. */
|
||||
bitmap_head out; /* At the bottom of the block. */
|
||||
};
|
||||
|
||||
|
||||
|
@ -828,13 +828,13 @@ struct df_md_bb_info
|
|||
struct df_lr_bb_info
|
||||
{
|
||||
/* Local sets to describe the basic blocks. */
|
||||
bitmap def; /* The set of registers set in this block
|
||||
- except artificial defs at the top. */
|
||||
bitmap use; /* The set of registers used in this block. */
|
||||
bitmap_head def; /* The set of registers set in this block
|
||||
- except artificial defs at the top. */
|
||||
bitmap_head use; /* The set of registers used in this block. */
|
||||
|
||||
/* The results of the dataflow problem. */
|
||||
bitmap in; /* Just before the block itself. */
|
||||
bitmap out; /* At the bottom of the block. */
|
||||
bitmap_head in; /* Just before the block itself. */
|
||||
bitmap_head out; /* At the bottom of the block. */
|
||||
};
|
||||
|
||||
|
||||
|
@ -845,13 +845,13 @@ struct df_lr_bb_info
|
|||
struct df_live_bb_info
|
||||
{
|
||||
/* Local sets to describe the basic blocks. */
|
||||
bitmap kill; /* The set of registers unset in this block. Calls,
|
||||
for instance, unset registers. */
|
||||
bitmap gen; /* The set of registers set in this block. */
|
||||
bitmap_head kill; /* The set of registers unset in this block. Calls,
|
||||
for instance, unset registers. */
|
||||
bitmap_head gen; /* The set of registers set in this block. */
|
||||
|
||||
/* The results of the dataflow problem. */
|
||||
bitmap in; /* At the top of the block. */
|
||||
bitmap out; /* At the bottom of the block. */
|
||||
bitmap_head in; /* At the top of the block. */
|
||||
bitmap_head out; /* At the bottom of the block. */
|
||||
};
|
||||
|
||||
|
||||
|
@ -861,13 +861,13 @@ indexed by the df_byte_lr_offset array which is indexed by pseudo. */
|
|||
struct df_byte_lr_bb_info
|
||||
{
|
||||
/* Local sets to describe the basic blocks. */
|
||||
bitmap def; /* The set of registers set in this block
|
||||
- except artificial defs at the top. */
|
||||
bitmap use; /* The set of registers used in this block. */
|
||||
bitmap_head def; /* The set of registers set in this block
|
||||
- except artificial defs at the top. */
|
||||
bitmap_head use; /* The set of registers used in this block. */
|
||||
|
||||
/* The results of the dataflow problem. */
|
||||
bitmap in; /* Just before the block itself. */
|
||||
bitmap out; /* At the bottom of the block. */
|
||||
bitmap_head in; /* Just before the block itself. */
|
||||
bitmap_head out; /* At the bottom of the block. */
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -220,8 +220,8 @@ single_def_use_enter_block (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
|
|||
struct df_lr_bb_info *lr_bb_info = df_lr_get_bb_info (bb_index);
|
||||
rtx insn;
|
||||
|
||||
bitmap_copy (local_md, md_bb_info->in);
|
||||
bitmap_copy (local_lr, lr_bb_info->in);
|
||||
bitmap_copy (local_md, &md_bb_info->in);
|
||||
bitmap_copy (local_lr, &lr_bb_info->in);
|
||||
|
||||
/* Push a marker for the leave_block callback. */
|
||||
VEC_safe_push (df_ref, heap, reg_defs_stack, NULL);
|
||||
|
|
|
@ -304,7 +304,7 @@ latch_dominating_def (rtx reg, df_ref *def)
|
|||
for (adef = DF_REG_DEF_CHAIN (regno); adef; adef = DF_REF_NEXT_REG (adef))
|
||||
{
|
||||
if (!bitmap_bit_p (df->blocks_to_analyze, DF_REF_BBNO (adef))
|
||||
|| !bitmap_bit_p (bb_info->out, DF_REF_ID (adef)))
|
||||
|| !bitmap_bit_p (&bb_info->out, DF_REF_ID (adef)))
|
||||
continue;
|
||||
|
||||
/* More than one reaching definition. */
|
||||
|
|
Loading…
Reference in New Issue