Re: alignas (C11)

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2026-01-25T10:34:38Z
Lists: pgsql-hackers
On 23.01.26 23:18, Tom Lane wrote:
> Peter Eisentraut <peter@eisentraut.org> writes:
>> On 23.01.26 18:33, Tom Lane wrote:
>>> Not sure what to do about that, but I do read it as indicating that we
>>> cannot put any faith in the compiler to honor such large alignment
>>> demands.
> 
>> I think we could work around it like this:
> 
>>       #if defined(__cplusplus) && defined(__GNUC__) && __GNUC__ <= 6
>>       #define alignas(a) __attribute__((aligned(a)))
>>       #endif
> 
> Hmm, yeah, their bug #70066 shows clearly that the __attribute__
> spelling should work.  But I think we'd better make the cutoff be
> version 9 not version 6, because that same bug is quite clear
> about when they fixed it.  The lack of complaints from the buildfarm
> may just indicate a lack of animals running the intermediate versions.

Ok, done that way.




Commits

  1. Further fix extended alignment for older g++.

  2. Disable extended alignment uses on older g++

  3. Work around buggy alignas in older g++

  4. Use C11 alignas in pg_atomic_uint64 definitions

  5. C11 alignas instead of unions -- extended alignments

  6. C11 alignas instead of unions

  7. Add <stdalign.h> to c.h