Commit 6fe2da9f by Jan Hubicka Committed by Jan Hubicka

tree.c (fld_type_variant_equal_p): Skip TYPE_ALIGN check when building…

tree.c (fld_type_variant_equal_p): Skip TYPE_ALIGN check when building incomplete variant of complete type.


	* tree.c (fld_type_variant_equal_p): Skip TYPE_ALIGN check when
	building incomplete variant of complete type.
	(fld_type_variant): Do not copy TYPE_ALIGN when building incomplete
	variant of complete type.

From-SVN: r265872
parent f70b5dbf
2018-11-07 Jan Hubicka <jh@suse.cz>
* tree.c (fld_type_variant_equal_p): Skip TYPE_ALIGN check when
building incomplete variant of complete type.
(fld_type_variant): Do not copy TYPE_ALIGN when building incomplete
variant of complete type.
2018-11-07 Chenghua Xu <paul.hua.gm@gmail.com>
* config/mips/mips.c: Fix typo in documentation of
......@@ -5106,7 +5106,10 @@ static bool
fld_type_variant_equal_p (tree t, tree v)
{
if (TYPE_QUALS (t) != TYPE_QUALS (v)
|| TYPE_ALIGN (t) != TYPE_ALIGN (v)
/* We want to match incomplete variants with complete types.
In this case we need to ignore alignment. */
|| ((!RECORD_OR_UNION_TYPE_P (t) || COMPLETE_TYPE_P (v))
&& TYPE_ALIGN (t) != TYPE_ALIGN (v))
|| fld_simplified_type_name (t) != fld_simplified_type_name (v)
|| !attribute_list_equal (TYPE_ATTRIBUTES (t),
TYPE_ATTRIBUTES (v)))
......@@ -5134,6 +5137,9 @@ fld_type_variant (tree first, tree t, struct free_lang_data_d *fld)
TYPE_NAME (v) = TYPE_NAME (t);
TYPE_ATTRIBUTES (v) = TYPE_ATTRIBUTES (t);
TYPE_CANONICAL (v) = TYPE_CANONICAL (t);
/* Variants of incomplete types should have alignment
set to BITS_PER_UNIT. Do not copy the actual alignment. */
if (!RECORD_OR_UNION_TYPE_P (v) || COMPLETE_TYPE_P (v))
SET_TYPE_ALIGN (v, TYPE_ALIGN (t));
gcc_checking_assert (fld_type_variant_equal_p (t,v));
add_tree_to_fld_list (v, fld);
......
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