+2017-10-26 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ * config/rs6000/aix.h (TARGET_IEEEQUAD_DEFAULT): Set long double
+ default to IBM.
+ * config/rs6000/darwin.h (TARGET_IEEEQUAD_DEFAULT): Likewise.
+ * config/rs6000/rs6000.opt (-mabi=ieeelongdouble): Move the
+ warning to rs6000.c. Remove the Undocumented flag, since it has
+ been documented.
+ (-mabi=ibmlongdouble): Likewise.
+ * config/rs6000/rs6000.c (TARGET_IEEEQUAD_DEFAULT): If it is not
+ already set, set the default format for long double.
+ (rs6000_debug_reg_global): Print whether long double is IBM or
+ IEEE.
+ (rs6000_option_override_internal): Rework setting long double
+ format. Only warn if the user is changing the long double default
+ and they did not use -Wno-psabi.
+ * doc/invoke.texi (PowerPC options): Update the documentation for
+ -mabi=ieeelongdouble and -mabi=ibmlongdouble.
+
2017-10-26 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
#ifndef TARGET_NO_PROTOTYPE
#define TARGET_NO_PROTOTYPE 0
+#endif
+
+ /* Set -mabi=ieeelongdouble on some old targets. In the future, power server
+ systems will also set long double to be IEEE 128-bit. AIX and Darwin
+ explicitly redefine TARGET_IEEEQUAD and TARGET_IEEEQUAD_DEFAULT to 0, so
+ those systems will not pick up this default. This needs to be after all
+ of the include files, so that POWERPC_LINUX and POWERPC_FREEBSD are
+ properly defined. */
+#ifndef TARGET_IEEEQUAD_DEFAULT
+#if !defined (POWERPC_LINUX) && !defined (POWERPC_FREEBSD)
+#define TARGET_IEEEQUAD_DEFAULT 1
+#else
+#define TARGET_IEEEQUAD_DEFAULT 0
+#endif
#endif
#define min(A,B) ((A) < (B) ? (A) : (B))
fprintf (stderr, DEBUG_FMT_D, "tls_size", rs6000_tls_size);
fprintf (stderr, DEBUG_FMT_D, "long_double_size",
rs6000_long_double_type_size);
+ if (rs6000_long_double_type_size == 128)
+ {
+ fprintf (stderr, DEBUG_FMT_S, "long double type",
+ TARGET_IEEEQUAD ? "IEEE" : "IBM");
+ fprintf (stderr, DEBUG_FMT_S, "default long double type",
+ TARGET_IEEEQUAD_DEFAULT ? "IEEE" : "IBM");
+ }
fprintf (stderr, DEBUG_FMT_D, "sched_restricted_insns_priority",
(int)rs6000_sched_restricted_insns_priority);
fprintf (stderr, DEBUG_FMT_D, "Number of standard builtins",
rs6000_long_double_type_size = RS6000_DEFAULT_LONG_DOUBLE_SIZE;
}
- /* Set -mabi=ieeelongdouble on some old targets. Note, AIX and Darwin
- explicitly redefine TARGET_IEEEQUAD to 0, so those systems will not
- pick up this default. */
-#if !defined (POWERPC_LINUX) && !defined (POWERPC_FREEBSD)
+ /* Set -mabi=ieeelongdouble on some old targets. In the future, power server
+ systems will also set long double to be IEEE 128-bit. AIX and Darwin
+ explicitly redefine TARGET_IEEEQUAD and TARGET_IEEEQUAD_DEFAULT to 0, so
+ those systems will not pick up this default. Warn if the user changes the
+ default unless -Wno-psabi. */
if (!global_options_set.x_rs6000_ieeequad)
- rs6000_ieeequad = 1;
-#endif
+ rs6000_ieeequad = TARGET_IEEEQUAD_DEFAULT;
+
+ else if (rs6000_ieeequad != TARGET_IEEEQUAD_DEFAULT && TARGET_LONG_DOUBLE_128)
+ {
+ static bool warned_change_long_double;
+ if (!warned_change_long_double)
+ {
+ warned_change_long_double = true;
+ if (TARGET_IEEEQUAD)
+ warning (OPT_Wpsabi, "Using IEEE extended precision long double");
+ else
+ warning (OPT_Wpsabi, "Using IBM extended precision long double");
+ }
+ }
/* Enable the default support for IEEE 128-bit floating point on Linux VSX
sytems. In GCC 7, we would enable the the IEEE 128-bit floating point
@item -mabi=ibmlongdouble
@opindex mabi=ibmlongdouble
Change the current ABI to use IBM extended-precision long double.
-This is a PowerPC 32-bit SYSV ABI option.
+This is not likely to work if your system defaults to using IEEE
+extended-precision long double. If you change the long double type
+from IEEE extended-precision, the compiler will issue a warning unless
+you use the @option{-Wno-psabi} option.
@item -mabi=ieeelongdouble
@opindex mabi=ieeelongdouble
Change the current ABI to use IEEE extended-precision long double.
-This is a PowerPC 32-bit Linux ABI option.
+This is not likely to work if your system defaults to using IBM
+extended-precision long double. If you change the long double type
+from IBM extended-precision, the compiler will issue a warning unless
+you use the @option{-Wno-psabi} option.
@item -mabi=elfv1
@opindex mabi=elfv1