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.
*/