Commit b33a91c9 by Jan Hubicka Committed by Jan Hubicka

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
parent fb340c3c
2010-06-04 Jan Hubicka <jh@suse.cz> 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. * dce.c (dce_process_block): Do not re-scan already marked instructions.
2010-06-04 Bernd Schmidt <bernds@codesourcery.com> 2010-06-04 Bernd Schmidt <bernds@codesourcery.com>
......
...@@ -192,7 +192,7 @@ create_ddg_dep_from_intra_loop_link (ddg_ptr g, ddg_node_ptr src_node, ...@@ -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); first_def = df_bb_regno_first_def_find (g->bb, regno);
gcc_assert (first_def); 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; return;
} }
} }
...@@ -263,7 +263,7 @@ add_cross_iteration_register_deps (ddg_ptr g, df_ref last_def) ...@@ -263,7 +263,7 @@ add_cross_iteration_register_deps (ddg_ptr g, df_ref last_def)
#ifdef ENABLE_CHECKING #ifdef ENABLE_CHECKING
if (DF_REF_ID (last_def) != DF_REF_ID (first_def)) 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 #endif
/* Create inter-loop true dependences and anti dependences. */ /* Create inter-loop true dependences and anti dependences. */
...@@ -338,7 +338,7 @@ build_inter_loop_deps (ddg_ptr g) ...@@ -338,7 +338,7 @@ build_inter_loop_deps (ddg_ptr g)
rd_bb_info = DF_RD_BB_INFO (g->bb); rd_bb_info = DF_RD_BB_INFO (g->bb);
/* Find inter-loop register output, true and anti deps. */ /* 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); df_ref rd = DF_DEFS_GET (rd_num);
......
...@@ -626,20 +626,20 @@ struct df ...@@ -626,20 +626,20 @@ struct df
/* Most transformations that wish to use live register analysis will /* Most transformations that wish to use live register analysis will
use these macros. This info is the and of the lr and live sets. */ 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_IN(BB) (&DF_LIVE_BB_INFO(BB)->in)
#define DF_LIVE_OUT(BB) (DF_LIVE_BB_INFO(BB)->out) #define DF_LIVE_OUT(BB) (&DF_LIVE_BB_INFO(BB)->out)
/* These macros are used by passes that are not tolerant of /* These macros are used by passes that are not tolerant of
uninitialized variables. This intolerance should eventually uninitialized variables. This intolerance should eventually
be fixed. */ be fixed. */
#define DF_LR_IN(BB) (DF_LR_BB_INFO(BB)->in) #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_OUT(BB) (&DF_LR_BB_INFO(BB)->out)
/* These macros are used by passes that are not tolerant of /* These macros are used by passes that are not tolerant of
uninitialized variables. This intolerance should eventually uninitialized variables. This intolerance should eventually
be fixed. */ be fixed. */
#define DF_BYTE_LR_IN(BB) (DF_BYTE_LR_BB_INFO(BB)->in) #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_OUT(BB) (&DF_BYTE_LR_BB_INFO(BB)->out)
/* Macros to access the elements within the ref structure. */ /* Macros to access the elements within the ref structure. */
...@@ -796,13 +796,13 @@ struct df_scan_bb_info ...@@ -796,13 +796,13 @@ struct df_scan_bb_info
struct df_rd_bb_info struct df_rd_bb_info
{ {
/* Local sets to describe the basic blocks. */ /* Local sets to describe the basic blocks. */
bitmap kill; bitmap_head kill;
bitmap sparse_kill; bitmap_head sparse_kill;
bitmap gen; /* The set of defs generated in this block. */ bitmap_head gen; /* The set of defs generated in this block. */
/* The results of the dataflow problem. */ /* The results of the dataflow problem. */
bitmap in; /* At the top of the block. */ bitmap_head in; /* At the top of the block. */
bitmap out; /* At the bottom of the block. */ bitmap_head out; /* At the bottom of the block. */
}; };
...@@ -812,13 +812,13 @@ struct df_rd_bb_info ...@@ -812,13 +812,13 @@ struct df_rd_bb_info
struct df_md_bb_info struct df_md_bb_info
{ {
/* Local sets to describe the basic blocks. */ /* Local sets to describe the basic blocks. */
bitmap gen; /* Partial/conditional definitions live at BB out. */ bitmap_head gen; /* Partial/conditional definitions live at BB out. */
bitmap kill; /* Other definitions that are live at BB out. */ bitmap_head kill; /* Other definitions that are live at BB out. */
bitmap init; /* Definitions coming from dominance frontier edges. */ bitmap_head init; /* Definitions coming from dominance frontier edges. */
/* The results of the dataflow problem. */ /* The results of the dataflow problem. */
bitmap in; /* Just before the block itself. */ bitmap_head in; /* Just before the block itself. */
bitmap out; /* At the bottom of the block. */ bitmap_head out; /* At the bottom of the block. */
}; };
...@@ -828,13 +828,13 @@ struct df_md_bb_info ...@@ -828,13 +828,13 @@ struct df_md_bb_info
struct df_lr_bb_info struct df_lr_bb_info
{ {
/* Local sets to describe the basic blocks. */ /* Local sets to describe the basic blocks. */
bitmap def; /* The set of registers set in this block bitmap_head def; /* The set of registers set in this block
- except artificial defs at the top. */ - except artificial defs at the top. */
bitmap use; /* The set of registers used in this block. */ bitmap_head use; /* The set of registers used in this block. */
/* The results of the dataflow problem. */ /* The results of the dataflow problem. */
bitmap in; /* Just before the block itself. */ bitmap_head in; /* Just before the block itself. */
bitmap out; /* At the bottom of the block. */ bitmap_head out; /* At the bottom of the block. */
}; };
...@@ -845,13 +845,13 @@ struct df_lr_bb_info ...@@ -845,13 +845,13 @@ struct df_lr_bb_info
struct df_live_bb_info struct df_live_bb_info
{ {
/* Local sets to describe the basic blocks. */ /* Local sets to describe the basic blocks. */
bitmap kill; /* The set of registers unset in this block. Calls, bitmap_head kill; /* The set of registers unset in this block. Calls,
for instance, unset registers. */ for instance, unset registers. */
bitmap gen; /* The set of registers set in this block. */ bitmap_head gen; /* The set of registers set in this block. */
/* The results of the dataflow problem. */ /* The results of the dataflow problem. */
bitmap in; /* At the top of the block. */ bitmap_head in; /* At the top of the block. */
bitmap out; /* At the bottom 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. */ ...@@ -861,13 +861,13 @@ indexed by the df_byte_lr_offset array which is indexed by pseudo. */
struct df_byte_lr_bb_info struct df_byte_lr_bb_info
{ {
/* Local sets to describe the basic blocks. */ /* Local sets to describe the basic blocks. */
bitmap def; /* The set of registers set in this block bitmap_head def; /* The set of registers set in this block
- except artificial defs at the top. */ - except artificial defs at the top. */
bitmap use; /* The set of registers used in this block. */ bitmap_head use; /* The set of registers used in this block. */
/* The results of the dataflow problem. */ /* The results of the dataflow problem. */
bitmap in; /* Just before the block itself. */ bitmap_head in; /* Just before the block itself. */
bitmap out; /* At the bottom of the block. */ 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, ...@@ -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); struct df_lr_bb_info *lr_bb_info = df_lr_get_bb_info (bb_index);
rtx insn; rtx insn;
bitmap_copy (local_md, md_bb_info->in); bitmap_copy (local_md, &md_bb_info->in);
bitmap_copy (local_lr, lr_bb_info->in); bitmap_copy (local_lr, &lr_bb_info->in);
/* Push a marker for the leave_block callback. */ /* Push a marker for the leave_block callback. */
VEC_safe_push (df_ref, heap, reg_defs_stack, NULL); VEC_safe_push (df_ref, heap, reg_defs_stack, NULL);
......
...@@ -304,7 +304,7 @@ latch_dominating_def (rtx reg, df_ref *def) ...@@ -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)) 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)) 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; continue;
/* More than one reaching definition. */ /* More than one reaching definition. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment