XEmacs 21.4.2 "Developer-Friendly Unix APIs".
[chise/xemacs-chise.git.1] / src / s / aix4.h
index adf3195..56bd1a1 100644 (file)
 /* Forward declarations for xlc warning suppressions */
 struct ether_addr;
 struct sockaddr_dl;
+
+#ifdef __xlC__                 /* "eXceLlent C compiler" ?! */
+#if __xlC__ >= 1200
+/* IBM's C compiler option `-O3' is too aggressive.
+   We recommend instead the combination `-O3 -qstrict', which seems safe.
+
+   cc -O3 miscompiles at least two functions.  From IBM's docs:
+
+   IBM> -qstrict turns off the following optimizations:
+
+   IBM> Performing code motion and scheduling on computations such as loads
+   IBM> and floating-point computations that may trigger an exception.
+
+   Nevertheless, we try to work with these compiler options. */
+#pragma option_override (bytecount_to_charcount, "opt(strict,yes)")
+#pragma option_override (Fexpand_file_name, "opt(strict,yes)")
+#endif /* recent IBM C compiler */
+#endif /* IBM's C compiler */
+
 #endif /* C code */
 
 /* getaddrinfo is broken in AIX 4.3 as per IY04165.
@@ -21,12 +40,3 @@ struct sockaddr_dl;
    -- Mike Sperber <mike@xemacs.org> */
 
 #undef HAVE_GETADDRINFO
-
-#ifdef __xlC__
-/* IBM's C compiler miscompiles this function.  From IBM's docs:
-   -qstrict turns off the following optimizations:
-
-   Performing code motion and scheduling on computations such as loads
-   and floating-point computations that may trigger an exception. */
-#pragma option_override (bytecount_to_charcount, "opt(strict,yes)")
-#endif /* IBM's C compiler */