* lib/flexmember.h (FLEXALIGNOF): Use the conservative definition
if _Alignof is a macro, to avoid a C99 conformance issue exposed
by IBM XL C 16.1 which otherwise complains "An aggregate
containing a flexible array member cannot be used as a member of a
structure or as an array element."
---
 ChangeLog        | 7 +++++++
 lib/flexmember.h | 2 +-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index a2495cc31a..35e25d2c03 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2025-01-18  Paul Eggert  <egg...@cs.ucla.edu>
 
+       flexmember: port to IBM XL C 16.1
+       * lib/flexmember.h (FLEXALIGNOF): Use the conservative definition
+       if _Alignof is a macro, to avoid a C99 conformance issue exposed
+       by IBM XL C 16.1 which otherwise complains "An aggregate
+       containing a flexible array member cannot be used as a member of a
+       structure or as an array element."
+
        alignasof: port to IBM XL C 16.1
        * doc/gnulib.texi (alignof):
        Improve doc to match implementationa better.
diff --git a/lib/flexmember.h b/lib/flexmember.h
index 15ee4f5e28..0168af0eca 100644
--- a/lib/flexmember.h
+++ b/lib/flexmember.h
@@ -32,7 +32,7 @@
    safe in practice even if FLEXIBLE_ARRAY_MEMBER is 1.
    On newer platforms, use _Alignof to get a tighter bound.  */
 
-#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 || defined _Alignof
 # define FLEXALIGNOF(type) (sizeof (type) & ~ (sizeof (type) - 1))
 #else
 # define FLEXALIGNOF(type) _Alignof (type)
-- 
2.45.2


Reply via email to