This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH,fixincldes] AIX assert.h static_assert
- From: David Edelsohn <dje dot gcc at gmail dot com>
- To: Bruce Korb <bkorb at gnu dot org>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Sat, 31 Aug 2013 19:40:34 -0400
- Subject: [PATCH,fixincldes] AIX assert.h static_assert
- Authentication-results: sourceware.org; auth=none
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.
*/