Work around buggy alignas in older g++

Older g++ (<9.3) mishandle the alignas specifier (raise warnings that
the alignment is too large), but the more or less equivalent attribute
works.  So as a workaround, #define alignas to that attribute for
those versions.

see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89357>

Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://www.postgresql.org/message-id/3119480.1769189606%40sss.pgh.pa.us
pull/268/head
Peter Eisentraut 3 weeks ago
parent 72e3abd082
commit a9bdb63bba
  1. 10
      src/include/c.h

@ -262,6 +262,16 @@
*/
#endif
/*
* alignas is buggy in g++ < 9, but the more or less equivalent attribute
* works.
*
* <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89357>
*/
#if defined(__cplusplus) && defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 9
#define alignas(a) __attribute__((aligned(a)))
#endif
/*
* Use "pg_attribute_always_inline" in place of "inline" for functions that
* we wish to force inlining of, even when the compiler's heuristics would

Loading…
Cancel
Save