diff options
author | Jan Hubicka <jh@suse.cz> | 2018-11-09 10:12:39 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2018-11-09 09:12:39 +0000 |
commit | 2e62beb05e8224d7632f8dbe3cace6a60bbfbf46 (patch) | |
tree | acec424e7541fa8795c5d392d6717b12d2d70bce | |
parent | 536ecfc44b1fd2db67f669e9bb4c388b13d12045 (diff) | |
download | gcc-2e62beb05e8224d7632f8dbe3cace6a60bbfbf46.zip gcc-2e62beb05e8224d7632f8dbe3cace6a60bbfbf46.tar.gz gcc-2e62beb05e8224d7632f8dbe3cace6a60bbfbf46.tar.bz2 |
tree.c (fld_type_variant_equal_p): Test user align flag.
* tree.c (fld_type_variant_equal_p): Test user align flag.
(flt_type_variant): Copy user align flag.
(fld_incomplete_type_of): Clear it.
From-SVN: r265949
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree.c | 9 |
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 800a115..4612ddf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-11-09 Jan Hubicka <jh@suse.cz> + + * tree.c (fld_type_variant_equal_p): Test user align flag. + (flt_type_variant): Copy user align flag. + (fld_incomplete_type_of): Clear it. + 2018-11-09 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> * config/arm/neon.md (div<mode>3): New pattern. @@ -5117,7 +5117,8 @@ fld_type_variant_equal_p (tree t, tree 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)) + && (TYPE_ALIGN (t) != TYPE_ALIGN (v) + || TYPE_USER_ALIGN (t) != TYPE_USER_ALIGN (v))) || fld_simplified_type_name (t) != fld_simplified_type_name (v) || !attribute_list_equal (TYPE_ATTRIBUTES (t), TYPE_ATTRIBUTES (v))) @@ -5148,7 +5149,10 @@ fld_type_variant (tree first, tree t, struct free_lang_data_d *fld) /* 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)); + { + SET_TYPE_ALIGN (v, TYPE_ALIGN (t)); + TYPE_USER_ALIGN (v) = TYPE_USER_ALIGN (t); + } gcc_checking_assert (fld_type_variant_equal_p (t,v)); add_tree_to_fld_list (v, fld); return v; @@ -5202,6 +5206,7 @@ fld_incomplete_type_of (tree t, struct free_lang_data_d *fld) TYPE_SIZE (copy) = NULL; SET_TYPE_MODE (copy, VOIDmode); SET_TYPE_ALIGN (copy, BITS_PER_UNIT); + TYPE_USER_ALIGN (copy) = 0; TYPE_SIZE_UNIT (copy) = NULL; TYPE_CANONICAL (copy) = TYPE_CANONICAL (t); TYPE_TYPELESS_STORAGE (copy) = 0; |