summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Eisentraut <peter@eisentraut.org>2026-01-25 11:16:58 +0100
committerPeter Eisentraut <peter@eisentraut.org>2026-01-25 11:32:47 +0100
commita9bdb63bba8a631cd4797393307eecf5fcde9167 (patch)
tree07488960d3584717859d7acfe1d4922a363a6859 /src
parent72e3abd082c3ae6db4081137a7431fdd05e55d73 (diff)
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
Diffstat (limited to 'src')
-rw-r--r--src/include/c.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/include/c.h b/src/include/c.h
index c0be07a4566..17afaef9a6a 100644
--- a/src/include/c.h
+++ b/src/include/c.h
@@ -263,6 +263,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
* choose not to. But, if possible, don't force inlining in unoptimized