On Wed, 21 Sep 2016, John David Anglin wrote:

> The alignment of 16 arises in code that used the ldcw instruction.
> Although this could be avoided in glibc there are numerous other
> packages with objects requiring 16-byte alignment.  So, I'm tending
> to think the typedef for max_align_t should be adjusted on hppa-linux
> so that it has 16-byte alignment.  Is that the correct approach?

The ISO C rule (given the fix to DR#445) is that max_align_t must be at 
least as aligned as, inter alia, "all types specified in clause 7 as 
complete object types".  The idea is that it must be at least as aligned 
as any type the user can define using only standard features other than 

It would seem reasonable for it to be at least as aligned as POSIX types 
as well, in cases where POSIX types have greater alignment requirements 
than ISO C types; clearly malloc needs to return memory sufficiently 
aligned for POSIX types (because POSIX inherits from C99, where malloc has 
the "any type of object" wording).  It's vector types we want to avoid 
contributing to max_align_t alignment.

Joseph S. Myers

Reply via email to