On Sat, Jul 04, 2015 at 12:57:36PM +0200, Richard Biener wrote:
> >>>> +  if (!AGGREGATE_TYPE_P (type))
> >>>> +    return TYPE_ALIGN (TYPE_MAIN_VARIANT (type)) > PARM_BOUNDARY;
> >>>> +
> >>>> +  for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN
> >>> (field))
> >>>> +    if (DECL_ALIGN (field) > PARM_BOUNDARY)
> >>>> +      return true;
> 
> I also believe this loop is equivalent to checking TYPE_ALIGN of the 
> aggregate type?

Is it?

What if you do
struct __attribute__((aligned (32))) S { char a; int b; char c; }; ?
In this case, TYPE_MAIN_VARIANT of S is S itself, and has TYPE_USER_ALIGN
and TYPE_ALIGN 256.

        Jakub

Reply via email to