Commit d725a1a5 by Jan Hubicka Committed by Jan Hubicka

df-problems.c (df_live_scratch): Convert to bitmap_head.

	* df-problems.c (df_live_scratch): Convert to bitmap_head.
	(df_live_alloc): Initialize df_live_scratch when initializing
	problem_data.
	(df_live_transfer_function): Update uses of df_live_scratch.
	(df_live_free): Free problem_data; clear df_live_scratch before
	releasing the obstack.
	(df_md_free): Free problem data.

From-SVN: r160612
parent 7ea6b6cf
2010-06-11 Jan Hubicka <jh@suse.cz> 2010-06-11 Jan Hubicka <jh@suse.cz>
* df-problems.c (df_live_scratch): Convert to bitmap_head.
(df_live_alloc): Initialize df_live_scratch when initializing
problem_data.
(df_live_transfer_function): Update uses of df_live_scratch.
(df_live_free): Free problem_data; clear df_live_scratch before
releasing the obstack.
(df_md_free): Free problem data.
2010-06-11 Jan Hubicka <jh@suse.cz>
* doc/invoke.texi (Wsuggest-attribute): Document. * doc/invoke.texi (Wsuggest-attribute): Document.
(Wmissing-noreturn): Remove. (Wmissing-noreturn): Remove.
* ipa-pure-const.c (warn_function_noreturn): New function. * ipa-pure-const.c (warn_function_noreturn): New function.
......
...@@ -1368,7 +1368,7 @@ struct df_live_problem_data ...@@ -1368,7 +1368,7 @@ struct df_live_problem_data
/* Scratch var used by transfer functions. This is used to implement /* Scratch var used by transfer functions. This is used to implement
an optimization to reduce the amount of space used to compute the an optimization to reduce the amount of space used to compute the
combined lr and live analysis. */ combined lr and live analysis. */
static bitmap df_live_scratch; static bitmap_head df_live_scratch;
/* Set basic block info. */ /* Set basic block info. */
...@@ -1423,9 +1423,8 @@ df_live_alloc (bitmap all_blocks ATTRIBUTE_UNUSED) ...@@ -1423,9 +1423,8 @@ df_live_alloc (bitmap all_blocks ATTRIBUTE_UNUSED)
problem_data->out = NULL; problem_data->out = NULL;
problem_data->in = NULL; problem_data->in = NULL;
bitmap_obstack_initialize (&problem_data->live_bitmaps); bitmap_obstack_initialize (&problem_data->live_bitmaps);
bitmap_initialize (&df_live_scratch, &problem_data->live_bitmaps);
} }
if (!df_live_scratch)
df_live_scratch = BITMAP_ALLOC (&problem_data->live_bitmaps);
df_grow_bb_info (df_live); df_grow_bb_info (df_live);
...@@ -1595,12 +1594,12 @@ df_live_transfer_function (int bb_index) ...@@ -1595,12 +1594,12 @@ df_live_transfer_function (int bb_index)
/* We need to use a scratch set here so that the value returned from this /* We need to use a scratch set here so that the value returned from this
function invocation properly reflects whether the sets changed in a function invocation properly reflects whether the sets changed in a
significant way; i.e. not just because the lr set was anded in. */ significant way; i.e. not just because the lr set was anded in. */
bitmap_and (df_live_scratch, gen, &bb_lr_info->out); bitmap_and (&df_live_scratch, gen, &bb_lr_info->out);
/* No register may reach a location where it is not used. Thus /* No register may reach a location where it is not used. Thus
we trim the rr result to the places where it is used. */ we trim the rr result to the places where it is used. */
bitmap_and_into (in, &bb_lr_info->in); bitmap_and_into (in, &bb_lr_info->in);
return bitmap_ior_and_compl (out, df_live_scratch, in, kill); return bitmap_ior_and_compl (out, &df_live_scratch, in, kill);
} }
...@@ -1643,10 +1642,10 @@ df_live_free (void) ...@@ -1643,10 +1642,10 @@ df_live_free (void)
free_alloc_pool (df_live->block_pool); free_alloc_pool (df_live->block_pool);
df_live->block_info_size = 0; df_live->block_info_size = 0;
free (df_live->block_info); free (df_live->block_info);
bitmap_clear (&df_live_scratch);
bitmap_obstack_release (&problem_data->live_bitmaps); bitmap_obstack_release (&problem_data->live_bitmaps);
free (problem_data);
if (df_live_scratch) df_live->problem_data = NULL;
BITMAP_FREE (df_live_scratch);
} }
BITMAP_FREE (df_live->out_of_date_transfer_functions); BITMAP_FREE (df_live->out_of_date_transfer_functions);
free (df_live); free (df_live);
...@@ -4545,6 +4544,8 @@ df_md_free (void) ...@@ -4545,6 +4544,8 @@ df_md_free (void)
bitmap_obstack_release (&problem_data->md_bitmaps); bitmap_obstack_release (&problem_data->md_bitmaps);
free_alloc_pool (df_md->block_pool); free_alloc_pool (df_md->block_pool);
free (problem_data);
df_md->problem_data = NULL;
df_md->block_info_size = 0; df_md->block_info_size = 0;
free (df_md->block_info); free (df_md->block_info);
......
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