This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] Define libc_max_align_t
- From: Rich Felker <dalias at libc dot org>
- To: Andreas Schwab <schwab at linux-m68k dot org>
- Cc: Florian Weimer <fweimer at redhat dot com>, GNU C Library <libc-alpha at sourceware dot org>
- Date: Wed, 1 Apr 2015 20:40:25 -0400
- Subject: Re: [PATCH] Define libc_max_align_t
- Authentication-results: sourceware.org; auth=none
- References: <551C1A60 dot 4080507 at redhat dot com> <87h9szqzi9 dot fsf at igel dot home>
On Thu, Apr 02, 2015 at 12:01:34AM +0200, Andreas Schwab wrote:
> Florian Weimer <fweimer@redhat.com> writes:
>
> > +/* This mirrors the C11 max_align_t type provided by GCC, but it is
> > + also available in C99 mode. */
> > +typedef struct {
> > + long long ll __attribute__ ((__aligned__ (__alignof__ (long long))));
> > + long double ld __attribute__ ((__aligned__ (__alignof__ (long double))));
> > +} libc_max_align_t;
>
> Why aren't the attributes no-ops?
Because gcc is insane.
On gcc, __alignof__ returns the "preferred alignment for optimization"
that gcc would use allocating such objects individually, not the "ABI
alignment" that would be used in structs, etc.
Rich