+2018-11-29 Peter Bergner <bergner@linux.ibm.com>
+
+ PR target/87496
+ * config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow
+ -mabi=ieeelongdouble without both -mpopcntd and -mvsx.
+
2018-11-29 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.c (inline_memory_move_cost):
if (!global_options_set.x_rs6000_ieeequad)
rs6000_ieeequad = TARGET_IEEEQUAD_DEFAULT;
- else if (rs6000_ieeequad != TARGET_IEEEQUAD_DEFAULT && TARGET_LONG_DOUBLE_128)
+ else
{
- static bool warned_change_long_double;
- if (!warned_change_long_double)
+ if (!TARGET_POPCNTD || !TARGET_VSX)
+ error ("%qs requires full ISA 2.06 support", "-mabi=ieeelongdouble");
+
+ if (rs6000_ieeequad != TARGET_IEEEQUAD_DEFAULT && TARGET_LONG_DOUBLE_128)
{
- 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");
+ 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");
+ }
}
}
--- /dev/null
+/* PR target/87496.c */
+/* { 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 } */