ipa-pure-const.c (varying_state): Break out from ...

* ipa-pure-const.c (varying_state): Break out from ...
	(get_function_state): ... here; always return varying_state
	when state would be NULL otherwise.
	(remove_node_data): Do not free varying state.

From-SVN: r162392
This commit is contained in:
Jan Hubicka 2010-07-22 00:56:27 +02:00 committed by Jan Hubicka
parent dbb9443595
commit 37512c66d0
2 changed files with 19 additions and 6 deletions

View File

@ -1,3 +1,10 @@
2010-07-22 Jan Hubicka <jh@suse.cz>
* ipa-pure-const.c (varying_state): Break out from ...
(get_function_state): ... here; always return varying_state
when state would be NULL otherwise.
(remove_node_data): Do not free varying state.
2010-07-22 Bernd Schmidt <bernds@codesourcery.com>
PR bootstrap/44970

View File

@ -95,6 +95,11 @@ struct funct_state_d
bool can_throw;
};
/* State used when we know nothing about function. */
static struct funct_state_d varying_state
= { IPA_NEITHER, IPA_NEITHER, true, true, true };
typedef struct funct_state_d * funct_state;
/* The storage of the funct_state is abstracted because there is the
@ -212,13 +217,12 @@ has_function_state (struct cgraph_node *node)
static inline funct_state
get_function_state (struct cgraph_node *node)
{
static struct funct_state_d varying
= { IPA_NEITHER, IPA_NEITHER, true, true, true };
if (!funct_state_vec
|| VEC_length (funct_state, funct_state_vec) <= (unsigned int)node->uid)
|| VEC_length (funct_state, funct_state_vec) <= (unsigned int)node->uid
|| !VEC_index (funct_state, funct_state_vec, node->uid))
/* We might want to put correct previously_known state into varying. */
return &varying;
return VEC_index (funct_state, funct_state_vec, node->uid);
return &varying_state;
return VEC_index (funct_state, funct_state_vec, node->uid);
}
/* Set the function state S for NODE. */
@ -860,7 +864,9 @@ remove_node_data (struct cgraph_node *node, void *data ATTRIBUTE_UNUSED)
{
if (has_function_state (node))
{
free (get_function_state (node));
funct_state l = get_function_state (node);
if (l != &varying_state)
free (l);
set_function_state (node, NULL);
}
}