On Sat, Aug 19, 2017 at 10:18 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
> Don't override alignment specified by user with the same value to
> preserve TYPE_USER_ALIGN.  This fixes PR 53037 tests on Sparc.
>
> Does it look right?

Doesn't match do_type_align so it introduces inconsistencies.  The documentation
for TYPE_USER_ALIGN doesn't specify when both cases conflict:

/* 1 if the alignment for this type was requested by "aligned" attribute,
   0 if it is the default for this type.  */

Note that for example the vectorizer looks at DECL_USER_ALIGN  (for
non-field-decls)
to decide whether it can increase alignment.

Richard.

>
> H.J.
> --
>         * stor-layout.c (finalize_type_size): Don't override alignment
>         specified by user with the same value.
> ---
>  gcc/stor-layout.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c
> index 3028d55773a..6dd605810ac 100644
> --- a/gcc/stor-layout.c
> +++ b/gcc/stor-layout.c
> @@ -1784,7 +1784,7 @@ finalize_type_size (tree type)
>
>        /* Don't override a larger alignment requirement coming from a user
>          alignment of one of the fields.  */
> -      if (mode_align >= TYPE_ALIGN (type))
> +      if (mode_align > TYPE_ALIGN (type))
>         {
>           SET_TYPE_ALIGN (type, mode_align);
>           TYPE_USER_ALIGN (type) = 0;
> --
> 2.13.5
>

Reply via email to