Commit 5c72d561 by Jan Hubicka Committed by Jan Hubicka

df-problems.c (seen_in_block, [...]): Convert to bitmap_head.

	* df-problems.c (seen_in_block, seen_in_insn): Convert to bitmap_head.
	(df_rd_problem_data): Convert sparse_invalidated_by_call,
	dense_invalidated_by_call to bitmap head.
	(df_rd_alloc, df_rd_bb_local_compute_process_def,
	df_rd_bb_local_compute, df_rd_confluence_n, df_rd_transfer_function,
	df_rd_start_dump, df_lr_verify_transfer_functions,
	df_live_verify_transfer_functions, df_chain_create_bb,
	df_chain_add_problem, df_byte_lr_check_regs, df_byte_lr_alloc,
	df_byte_lr_confluence_0, df_byte_lr_confluence_n, df_note_compute,
	df_simulate_one_insn_forwards, df_md_alloc, df_md_bb_local_compute_process_def,
	df_md_bb_local_compute_process_def, df_md_local_compute, df_md_transfer_function
	df_md_free): Update.

From-SVN: r160315
parent d65aed70
2010-06-05 Jan Hubicka <jh@suse.cz>
* df-problems.c (seen_in_block, seen_in_insn): Convert to bitmap_head.
(df_rd_problem_data): Convert sparse_invalidated_by_call,
dense_invalidated_by_call to bitmap head.
(df_rd_alloc, df_rd_bb_local_compute_process_def,
df_rd_bb_local_compute, df_rd_confluence_n, df_rd_transfer_function,
df_rd_start_dump, df_lr_verify_transfer_functions,
df_live_verify_transfer_functions, df_chain_create_bb,
df_chain_add_problem, df_byte_lr_check_regs, df_byte_lr_alloc,
df_byte_lr_confluence_0, df_byte_lr_confluence_n, df_note_compute,
df_simulate_one_insn_forwards, df_md_alloc, df_md_bb_local_compute_process_def,
df_md_bb_local_compute_process_def, df_md_local_compute, df_md_transfer_function
df_md_free): Update.
2010-06-05 Joseph Myers <joseph@codesourcery.com> 2010-06-05 Joseph Myers <joseph@codesourcery.com>
PR c/44322 PR c/44322
......
...@@ -356,15 +356,15 @@ static bool in_fre = false; ...@@ -356,15 +356,15 @@ static bool in_fre = false;
expressions. */ expressions. */
typedef struct bitmap_set typedef struct bitmap_set
{ {
bitmap expressions; bitmap_head expressions;
bitmap values; bitmap_head values;
} *bitmap_set_t; } *bitmap_set_t;
#define FOR_EACH_EXPR_ID_IN_SET(set, id, bi) \ #define FOR_EACH_EXPR_ID_IN_SET(set, id, bi) \
EXECUTE_IF_SET_IN_BITMAP((set)->expressions, 0, (id), (bi)) EXECUTE_IF_SET_IN_BITMAP(&(set)->expressions, 0, (id), (bi))
#define FOR_EACH_VALUE_ID_IN_SET(set, id, bi) \ #define FOR_EACH_VALUE_ID_IN_SET(set, id, bi) \
EXECUTE_IF_SET_IN_BITMAP((set)->values, 0, (id), (bi)) EXECUTE_IF_SET_IN_BITMAP(&(set)->values, 0, (id), (bi))
/* Mapping from value id to expressions with that value_id. */ /* Mapping from value id to expressions with that value_id. */
DEF_VEC_P (bitmap_set_t); DEF_VEC_P (bitmap_set_t);
...@@ -615,8 +615,8 @@ static bitmap_set_t ...@@ -615,8 +615,8 @@ static bitmap_set_t
bitmap_set_new (void) bitmap_set_new (void)
{ {
bitmap_set_t ret = (bitmap_set_t) pool_alloc (bitmap_set_pool); bitmap_set_t ret = (bitmap_set_t) pool_alloc (bitmap_set_pool);
ret->expressions = BITMAP_ALLOC (&grand_bitmap_obstack); bitmap_initialize (&ret->expressions, &grand_bitmap_obstack);
ret->values = BITMAP_ALLOC (&grand_bitmap_obstack); bitmap_initialize (&ret->values, &grand_bitmap_obstack);
return ret; return ret;
} }
...@@ -657,8 +657,8 @@ bitmap_remove_from_set (bitmap_set_t set, pre_expr expr) ...@@ -657,8 +657,8 @@ bitmap_remove_from_set (bitmap_set_t set, pre_expr expr)
unsigned int val = get_expr_value_id (expr); unsigned int val = get_expr_value_id (expr);
if (!value_id_constant_p (val)) if (!value_id_constant_p (val))
{ {
bitmap_clear_bit (set->values, val); bitmap_clear_bit (&set->values, val);
bitmap_clear_bit (set->expressions, get_expression_id (expr)); bitmap_clear_bit (&set->expressions, get_expression_id (expr));
} }
} }
...@@ -670,8 +670,8 @@ bitmap_insert_into_set_1 (bitmap_set_t set, pre_expr expr, ...@@ -670,8 +670,8 @@ bitmap_insert_into_set_1 (bitmap_set_t set, pre_expr expr,
{ {
/* We specifically expect this and only this function to be able to /* We specifically expect this and only this function to be able to
insert constants into a set. */ insert constants into a set. */
bitmap_set_bit (set->values, val); bitmap_set_bit (&set->values, val);
bitmap_set_bit (set->expressions, get_or_alloc_expression_id (expr)); bitmap_set_bit (&set->expressions, get_or_alloc_expression_id (expr));
} }
} }
...@@ -688,8 +688,8 @@ bitmap_insert_into_set (bitmap_set_t set, pre_expr expr) ...@@ -688,8 +688,8 @@ bitmap_insert_into_set (bitmap_set_t set, pre_expr expr)
static void static void
bitmap_set_copy (bitmap_set_t dest, bitmap_set_t orig) bitmap_set_copy (bitmap_set_t dest, bitmap_set_t orig)
{ {
bitmap_copy (dest->expressions, orig->expressions); bitmap_copy (&dest->expressions, &orig->expressions);
bitmap_copy (dest->values, orig->values); bitmap_copy (&dest->values, &orig->values);
} }
...@@ -697,8 +697,8 @@ bitmap_set_copy (bitmap_set_t dest, bitmap_set_t orig) ...@@ -697,8 +697,8 @@ bitmap_set_copy (bitmap_set_t dest, bitmap_set_t orig)
static void static void
bitmap_set_free (bitmap_set_t set) bitmap_set_free (bitmap_set_t set)
{ {
BITMAP_FREE (set->expressions); bitmap_clear (&set->expressions);
BITMAP_FREE (set->values); bitmap_clear (&set->values);
} }
...@@ -712,7 +712,7 @@ sorted_array_from_bitmap_set (bitmap_set_t set) ...@@ -712,7 +712,7 @@ sorted_array_from_bitmap_set (bitmap_set_t set)
VEC(pre_expr, heap) *result; VEC(pre_expr, heap) *result;
/* Pre-allocate roughly enough space for the array. */ /* Pre-allocate roughly enough space for the array. */
result = VEC_alloc (pre_expr, heap, bitmap_count_bits (set->values)); result = VEC_alloc (pre_expr, heap, bitmap_count_bits (&set->values));
FOR_EACH_VALUE_ID_IN_SET (set, i, bi) FOR_EACH_VALUE_ID_IN_SET (set, i, bi)
{ {
...@@ -729,7 +729,7 @@ sorted_array_from_bitmap_set (bitmap_set_t set) ...@@ -729,7 +729,7 @@ sorted_array_from_bitmap_set (bitmap_set_t set)
bitmap_set_t exprset = VEC_index (bitmap_set_t, value_expressions, i); bitmap_set_t exprset = VEC_index (bitmap_set_t, value_expressions, i);
FOR_EACH_EXPR_ID_IN_SET (exprset, j, bj) FOR_EACH_EXPR_ID_IN_SET (exprset, j, bj)
{ {
if (bitmap_bit_p (set->expressions, j)) if (bitmap_bit_p (&set->expressions, j))
VEC_safe_push (pre_expr, heap, result, expression_for_id (j)); VEC_safe_push (pre_expr, heap, result, expression_for_id (j));
} }
} }
...@@ -747,18 +747,19 @@ bitmap_set_and (bitmap_set_t dest, bitmap_set_t orig) ...@@ -747,18 +747,19 @@ bitmap_set_and (bitmap_set_t dest, bitmap_set_t orig)
if (dest != orig) if (dest != orig)
{ {
bitmap temp = BITMAP_ALLOC (&grand_bitmap_obstack); bitmap_head temp;
bitmap_initialize (&temp, &grand_bitmap_obstack);
bitmap_and_into (dest->values, orig->values); bitmap_and_into (&dest->values, &orig->values);
bitmap_copy (temp, dest->expressions); bitmap_copy (&temp, &dest->expressions);
EXECUTE_IF_SET_IN_BITMAP (temp, 0, i, bi) EXECUTE_IF_SET_IN_BITMAP (&temp, 0, i, bi)
{ {
pre_expr expr = expression_for_id (i); pre_expr expr = expression_for_id (i);
unsigned int value_id = get_expr_value_id (expr); unsigned int value_id = get_expr_value_id (expr);
if (!bitmap_bit_p (dest->values, value_id)) if (!bitmap_bit_p (&dest->values, value_id))
bitmap_clear_bit (dest->expressions, i); bitmap_clear_bit (&dest->expressions, i);
} }
BITMAP_FREE (temp); bitmap_clear (&temp);
} }
} }
...@@ -771,14 +772,14 @@ bitmap_set_subtract (bitmap_set_t dest, bitmap_set_t orig) ...@@ -771,14 +772,14 @@ bitmap_set_subtract (bitmap_set_t dest, bitmap_set_t orig)
bitmap_iterator bi; bitmap_iterator bi;
unsigned int i; unsigned int i;
bitmap_and_compl (result->expressions, dest->expressions, bitmap_and_compl (&result->expressions, &dest->expressions,
orig->expressions); &orig->expressions);
FOR_EACH_EXPR_ID_IN_SET (result, i, bi) FOR_EACH_EXPR_ID_IN_SET (result, i, bi)
{ {
pre_expr expr = expression_for_id (i); pre_expr expr = expression_for_id (i);
unsigned int value_id = get_expr_value_id (expr); unsigned int value_id = get_expr_value_id (expr);
bitmap_set_bit (result->values, value_id); bitmap_set_bit (&result->values, value_id);
} }
return result; return result;
...@@ -791,16 +792,18 @@ bitmap_set_subtract_values (bitmap_set_t a, bitmap_set_t b) ...@@ -791,16 +792,18 @@ bitmap_set_subtract_values (bitmap_set_t a, bitmap_set_t b)
{ {
unsigned int i; unsigned int i;
bitmap_iterator bi; bitmap_iterator bi;
bitmap temp = BITMAP_ALLOC (&grand_bitmap_obstack); bitmap_head temp;
bitmap_copy (temp, a->expressions); bitmap_initialize (&temp, &grand_bitmap_obstack);
EXECUTE_IF_SET_IN_BITMAP (temp, 0, i, bi)
bitmap_copy (&temp, &a->expressions);
EXECUTE_IF_SET_IN_BITMAP (&temp, 0, i, bi)
{ {
pre_expr expr = expression_for_id (i); pre_expr expr = expression_for_id (i);
if (bitmap_set_contains_value (b, get_expr_value_id (expr))) if (bitmap_set_contains_value (b, get_expr_value_id (expr)))
bitmap_remove_from_set (a, expr); bitmap_remove_from_set (a, expr);
} }
BITMAP_FREE (temp); bitmap_clear (&temp);
} }
...@@ -812,16 +815,16 @@ bitmap_set_contains_value (bitmap_set_t set, unsigned int value_id) ...@@ -812,16 +815,16 @@ bitmap_set_contains_value (bitmap_set_t set, unsigned int value_id)
if (value_id_constant_p (value_id)) if (value_id_constant_p (value_id))
return true; return true;
if (!set || bitmap_empty_p (set->expressions)) if (!set || bitmap_empty_p (&set->expressions))
return false; return false;
return bitmap_bit_p (set->values, value_id); return bitmap_bit_p (&set->values, value_id);
} }
static inline bool static inline bool
bitmap_set_contains_expr (bitmap_set_t set, const pre_expr expr) bitmap_set_contains_expr (bitmap_set_t set, const pre_expr expr)
{ {
return bitmap_bit_p (set->expressions, get_expression_id (expr)); return bitmap_bit_p (&set->expressions, get_expression_id (expr));
} }
/* Replace an instance of value LOOKFOR with expression EXPR in SET. */ /* Replace an instance of value LOOKFOR with expression EXPR in SET. */
...@@ -852,10 +855,10 @@ bitmap_set_replace_value (bitmap_set_t set, unsigned int lookfor, ...@@ -852,10 +855,10 @@ bitmap_set_replace_value (bitmap_set_t set, unsigned int lookfor,
exprset = VEC_index (bitmap_set_t, value_expressions, lookfor); exprset = VEC_index (bitmap_set_t, value_expressions, lookfor);
FOR_EACH_EXPR_ID_IN_SET (exprset, i, bi) FOR_EACH_EXPR_ID_IN_SET (exprset, i, bi)
{ {
if (bitmap_bit_p (set->expressions, i)) if (bitmap_bit_p (&set->expressions, i))
{ {
bitmap_clear_bit (set->expressions, i); bitmap_clear_bit (&set->expressions, i);
bitmap_set_bit (set->expressions, get_expression_id (expr)); bitmap_set_bit (&set->expressions, get_expression_id (expr));
return; return;
} }
} }
...@@ -866,7 +869,7 @@ bitmap_set_replace_value (bitmap_set_t set, unsigned int lookfor, ...@@ -866,7 +869,7 @@ bitmap_set_replace_value (bitmap_set_t set, unsigned int lookfor,
static bool static bool
bitmap_set_equal (bitmap_set_t a, bitmap_set_t b) bitmap_set_equal (bitmap_set_t a, bitmap_set_t b)
{ {
return bitmap_equal_p (a->values, b->values); return bitmap_equal_p (&a->values, &b->values);
} }
/* Replace an instance of EXPR's VALUE with EXPR in SET if it exists, /* Replace an instance of EXPR's VALUE with EXPR in SET if it exists,
...@@ -900,8 +903,8 @@ bitmap_value_insert_into_set (bitmap_set_t set, pre_expr expr) ...@@ -900,8 +903,8 @@ bitmap_value_insert_into_set (bitmap_set_t set, pre_expr expr)
return; return;
/* If the value membership changed, add the expression. */ /* If the value membership changed, add the expression. */
if (bitmap_set_bit (set->values, val)) if (bitmap_set_bit (&set->values, val))
bitmap_set_bit (set->expressions, expr->id); bitmap_set_bit (&set->expressions, expr->id);
} }
/* Print out EXPR to outfile. */ /* Print out EXPR to outfile. */
...@@ -1870,8 +1873,8 @@ bitmap_find_leader (bitmap_set_t set, unsigned int val, gimple stmt) ...@@ -1870,8 +1873,8 @@ bitmap_find_leader (bitmap_set_t set, unsigned int val, gimple stmt)
bitmap_iterator bi; bitmap_iterator bi;
bitmap_set_t exprset = VEC_index (bitmap_set_t, value_expressions, val); bitmap_set_t exprset = VEC_index (bitmap_set_t, value_expressions, val);
EXECUTE_IF_AND_IN_BITMAP (exprset->expressions, EXECUTE_IF_AND_IN_BITMAP (&exprset->expressions,
set->expressions, 0, i, bi) &set->expressions, 0, i, bi)
{ {
pre_expr val = expression_for_id (i); pre_expr val = expression_for_id (i);
/* At the point where stmt is not null, there should always /* At the point where stmt is not null, there should always
...@@ -2291,8 +2294,7 @@ compute_antic_aux (basic_block block, bool block_has_abnormal_pred_edge) ...@@ -2291,8 +2294,7 @@ compute_antic_aux (basic_block block, bool block_has_abnormal_pred_edge)
clean (ANTIC_IN (block), block); clean (ANTIC_IN (block), block);
/* !old->expressions can happen when we deferred a block. */ if (!bitmap_set_equal (old, ANTIC_IN (block)))
if (!old->expressions || !bitmap_set_equal (old, ANTIC_IN (block)))
{ {
changed = true; changed = true;
SET_BIT (changed_blocks, block->index); SET_BIT (changed_blocks, block->index);
...@@ -2367,7 +2369,7 @@ compute_partial_antic_aux (basic_block block, ...@@ -2367,7 +2369,7 @@ compute_partial_antic_aux (basic_block block,
before the translation starts. */ before the translation starts. */
if (max_pa if (max_pa
&& single_succ_p (block) && single_succ_p (block)
&& bitmap_count_bits (PA_IN (single_succ (block))->values) > max_pa) && bitmap_count_bits (&PA_IN (single_succ (block))->values) > max_pa)
goto maybe_dump_sets; goto maybe_dump_sets;
old_PA_IN = PA_IN (block); old_PA_IN = PA_IN (block);
...@@ -2437,8 +2439,8 @@ compute_partial_antic_aux (basic_block block, ...@@ -2437,8 +2439,8 @@ compute_partial_antic_aux (basic_block block,
/* For partial antic, we want to put back in the phi results, since /* For partial antic, we want to put back in the phi results, since
we will properly avoid making them partially antic over backedges. */ we will properly avoid making them partially antic over backedges. */
bitmap_ior_into (PA_IN (block)->values, PHI_GEN (block)->values); bitmap_ior_into (&PA_IN (block)->values, &PHI_GEN (block)->values);
bitmap_ior_into (PA_IN (block)->expressions, PHI_GEN (block)->expressions); bitmap_ior_into (&PA_IN (block)->expressions, &PHI_GEN (block)->expressions);
/* PA_IN[block] = PA_IN[block] - ANTIC_IN[block] */ /* PA_IN[block] = PA_IN[block] - ANTIC_IN[block] */
bitmap_set_subtract_values (PA_IN (block), ANTIC_IN (block)); bitmap_set_subtract_values (PA_IN (block), ANTIC_IN (block));
......
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