Add var in push_fields_onto_fieldstack

2015-10-27  Tom de Vries  <tom@codesourcery.com>

	* tree-ssa-structalias.c (push_fields_onto_fieldstack): Add and use var
	field_type.

From-SVN: r229403
This commit is contained in:
Tom de Vries 2015-10-27 07:09:58 +00:00 committed by Tom de Vries
parent 5b92e1895e
commit 5acdb61b69
2 changed files with 11 additions and 5 deletions

View File

@ -1,3 +1,8 @@
2015-10-27 Tom de Vries <tom@codesourcery.com>
* tree-ssa-structalias.c (push_fields_onto_fieldstack): Add and use var
field_type.
2015-10-27 Bin Cheng <bin.cheng@arm.com>
* loop-invariant.c (struct def): New field can_prop_to_addr_uses.

View File

@ -5313,13 +5313,14 @@ push_fields_onto_fieldstack (tree type, vec<fieldoff_s> *fieldstack,
{
bool push = false;
HOST_WIDE_INT foff = bitpos_of_field (field);
tree field_type = TREE_TYPE (field);
if (!var_can_have_subvars (field)
|| TREE_CODE (TREE_TYPE (field)) == QUAL_UNION_TYPE
|| TREE_CODE (TREE_TYPE (field)) == UNION_TYPE)
|| TREE_CODE (field_type) == QUAL_UNION_TYPE
|| TREE_CODE (field_type) == UNION_TYPE)
push = true;
else if (!push_fields_onto_fieldstack
(TREE_TYPE (field), fieldstack, offset + foff)
(field_type, fieldstack, offset + foff)
&& (DECL_SIZE (field)
&& !integer_zerop (DECL_SIZE (field))))
/* Empty structures may have actual size, like in C++. So
@ -5372,8 +5373,8 @@ push_fields_onto_fieldstack (tree type, vec<fieldoff_s> *fieldstack,
e.may_have_pointers = true;
e.only_restrict_pointers
= (!has_unknown_size
&& POINTER_TYPE_P (TREE_TYPE (field))
&& TYPE_RESTRICT (TREE_TYPE (field)));
&& POINTER_TYPE_P (field_type)
&& TYPE_RESTRICT (field_type));
fieldstack->safe_push (e);
}
}