[PATCH] Define libc_max_align_t

Rich Felker dalias@libc.org
Thu Apr 2 00:40:00 GMT 2015


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



More information about the Libc-alpha mailing list