Commit 17e99cdb by Richard Guenther Committed by Richard Biener

gimple.c (gimple_types_compatible_p_1): Compare record and union type members properly.

2011-05-30  Richard Guenther  <rguenther@suse.de>

	* gimple.c (gimple_types_compatible_p_1): Compare record
	and union type members properly.

From-SVN: r174436
parent 42b05b6e
2011-05-30 Richard Guenther <rguenther@suse.de> 2011-05-30 Richard Guenther <rguenther@suse.de>
* gimple.c (gimple_types_compatible_p_1): Compare record
and union type members properly.
2011-05-30 Richard Guenther <rguenther@suse.de>
PR tree-optimization/49210 PR tree-optimization/49210
* ipa-split.c (split_function): Care for the case where the * ipa-split.c (split_function): Care for the case where the
call result is not trivially convertible to the result holding call result is not trivially convertible to the result holding
......
...@@ -3772,10 +3772,16 @@ gimple_types_compatible_p_1 (tree t1, tree t2, type_pair_t p, ...@@ -3772,10 +3772,16 @@ gimple_types_compatible_p_1 (tree t1, tree t2, type_pair_t p,
f1 && f2; f1 && f2;
f1 = TREE_CHAIN (f1), f2 = TREE_CHAIN (f2)) f1 = TREE_CHAIN (f1), f2 = TREE_CHAIN (f2))
{ {
/* The fields must have the same name, offset and type. */ /* Different field kinds are not compatible. */
if (TREE_CODE (f1) != TREE_CODE (f2))
goto different_types;
/* Field decls must have the same name and offset. */
if (TREE_CODE (f1) == FIELD_DECL
&& (DECL_NONADDRESSABLE_P (f1) != DECL_NONADDRESSABLE_P (f2)
|| !gimple_compare_field_offset (f1, f2)))
goto different_types;
/* All entities should have the same name and type. */
if (DECL_NAME (f1) != DECL_NAME (f2) if (DECL_NAME (f1) != DECL_NAME (f2)
|| DECL_NONADDRESSABLE_P (f1) != DECL_NONADDRESSABLE_P (f2)
|| !gimple_compare_field_offset (f1, f2)
|| !gtc_visit (TREE_TYPE (f1), TREE_TYPE (f2), || !gtc_visit (TREE_TYPE (f1), TREE_TYPE (f2),
state, sccstack, sccstate, sccstate_obstack)) state, sccstack, sccstate, sccstate_obstack))
goto different_types; goto different_types;
......
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