On Mon, Jul 7, 2025 at 11:08 PM Jason Merrill <ja...@redhat.com> wrote: > > On 7/1/25 5:36 PM, H.J. Lu wrote: > > On Tue, Jul 1, 2025 at 9:37 PM Jason Merrill <ja...@redhat.com> wrote: > >> > >> On 6/30/25 7:03 PM, H.J. Lu wrote: > >>> On Mon, Jun 30, 2025 at 10:36 PM Jason Merrill <ja...@redhat.com> wrote: > >>>> > >>>> On 6/28/25 7:00 AM, H.J. Lu wrote: > >>>>> Since a backend may ignore user type alignment for arguments passed on > >>>>> stack, check backend for argument alignment on stack when evaluating > >>>>> __alignof. > >>>> > >>>> I assume that's reflected in DECL_ALIGN, so could we just add PARM_DECL > >>>> to > >>> > >>> No. targetm.calls.function_arg_boundary may have special handling for it. > >> > >> Why wouldn't we adjust DECL_ALIGN of the PARM_DECL to reflect the actual > >> alignment of the argument? Are you saying it could be different from > >> one call to another? > > > > Function argument alignment is different from other places in memory if > > the main variant type alignment is different: > > Yes, I understand that function parameter alignment can be different > from other objects of that type. > > But since we have a PARM_DECL to represent that particular function > parameter, it seems natural to represent that difference in the > DECL_ALIGN of the PARM_DECL. If you don't, its DECL_ALIGN is wrong. >
__alignof returns TYPE_ALIGN, not DECL_ALIGN. For PARM_DECL, TYPE_ALIGN may not be the same as DECL_ALIGN. -- H.J.