+2018-12-12 Peter Bergner <bergner@linux.ibm.com>
+
+ Backport from mainline
+ 2018-12-07 Peter Bergner <bergner@linux.ibm.com>
+
+ PR target/87496
+ * config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow
+ -mabi=ieeelongdouble and -mabi=ibmlongdouble without -mlong-double-128.
+ Do not error for -mabi=ibmlongdouble and no ISA 2.06 support.
+ * doc/invoke.texi: Document -mabi=ibmlongdouble and -mabi=ieeelongdouble
+ require -mlong-double-128.
+
2018-12-06 Richard Biener <rguenther@suse.de>
* BASE-VER: Increment to 7.4.1.
else
rs6000_long_double_type_size = RS6000_DEFAULT_LONG_DOUBLE_SIZE;
}
+ else if (global_options_set.x_rs6000_ieeequad)
+ {
+ if (global_options.x_rs6000_ieeequad)
+ error ("%qs requires %qs", "-mabi=ieeelongdouble", "-mlong-double-128");
+ else
+ error ("%qs requires %qs", "-mabi=ibmlongdouble", "-mlong-double-128");
+ }
/* Set -mabi=ieeelongdouble on some old targets. Note, AIX and Darwin
explicitly redefine TARGET_IEEEQUAD to 0, so those systems will not
rs6000_ieeequad = 1;
#endif
+ if (global_options_set.x_rs6000_ieeequad
+ && global_options.x_rs6000_ieeequad
+ && (!TARGET_POPCNTD || !TARGET_VSX))
+ error ("%qs requires full ISA 2.06 support", "-mabi=ieeelongdouble");
+
/* Enable the default support for IEEE 128-bit floating point on Linux VSX
sytems, but don't enable the __float128 keyword. */
if (TARGET_VSX && TARGET_LONG_DOUBLE_128
@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 a PowerPC 32-bit SYSV ABI option. Requires @option{-mlong-double-128}
+to be enabled.
@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 a PowerPC 32-bit Linux ABI option. Requires @option{-mlong-double-128}
+to be enabled.
@item -mabi=elfv1
@opindex mabi=elfv1
+2018-12-12 Peter Bergner <bergner@linux.ibm.com>
+
+ Backport from mainline
+ 2018-12-07 Peter Bergner <bergner@linux.ibm.com>
+
+ PR target/87496
+ * gcc.target/powerpc/pr87496-1.c: New test.
+ * gcc.target/powerpc/pr87496-2.c: New test.
+ * gcc.target/powerpc/pr87496-3.c: New test.
+
2018-12-11 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/88155
--- /dev/null
+/* PR target/87496 */
+/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } } */
+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */
+/* { dg-require-effective-target longdouble128 } */
+/* { dg-options "-O2 -mcpu=power7 -mabi=ieeelongdouble -mno-popcntd -Wno-psabi" } */
+
+int i;
+
+/* { dg-error "'-mabi=ieeelongdouble' requires full ISA 2.06 support" "PR87496" { target *-*-* } 0 } */
+/* { dg-warning "using IEEE extended precision long double" "" { target *-*-* } 0 } */
--- /dev/null
+/* PR target/87496 */
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } } */
+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */
+/* { dg-options "-O2 -mcpu=power7 -mabi=ieeelongdouble -mlong-double-64 -Wno-psabi" } */
+
+int i;
+
+/* { dg-error "'-mabi=ieeelongdouble' requires '-mlong-double-128'" "PR87496" { target *-*-* } 0 } */
+/* { dg-warning "using IEEE extended precision long double" "" { target *-*-* } 0 } */
--- /dev/null
+/* PR target/87496 */
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } } */
+/* { dg-options "-O2 -mabi=ibmlongdouble -mlong-double-64 -Wno-psabi" } */
+
+int i;
+
+/* { dg-error "'-mabi=ibmlongdouble' requires '-mlong-double-128'" "PR87496" { target *-*-* } 0 } */
+/* { dg-warning "using IBM extended precision long double" "" { target *-*-* } 0 } */