In a recent change to AIX 7, the assert.h header defines static_assert. I presume this was intended not to avoid conflicts with the new C++ keyword. Sigh. However, the definition is not protected from C++, which causes problem if the header is included in C++ code, which it is in libstdc++. This fixincludes patch protects the definition so that it only applies to ISO C code.
Bootstrapped on powerpc-ibm-aix7.1.0.0 Thanks, David * inclhack.def (aix_assert): New fix. * fixincl.x: Regenerate. * tests/base/assert.h [AIX_ASSERT_CHECK]: New check. Index: inclhack.def =================================================================== --- inclhack.def (revision 202134) +++ inclhack.def (working copy) @@ -569,6 +569,20 @@ }; /* + * assert.h on AIX 7 redefines static_assert as _Static_assert without + * protecting C++. + */ +fix = { + hackname = aix_assert; + mach = "*-*-aix*"; + files = assert.h; + select = "#define[ \t]static_assert[ \t]_Static_assert"; + c_fix = format; + c_fix_arg = "#ifndef __cplusplus\n%0\n#endif"; + test_text = "#define static_assert _Static_assert"; +}; + +/* * complex.h on AIX 5 and AIX 6 define _Complex_I and I in terms of __I, * which only is provided by AIX xlc C99. */