re PR target/87496 (ICE in aggregate_value_p at gcc/function.c:2046)

gcc/
	PR target/87496
	* config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow
	-mabi=ieeelongdouble without both -mpopcntd and -mvsx.

gcc/testsuite/
	PR target/87496
	* gcc.target/powerpc/pr87496.c: New test.

From-SVN: r266636
This commit is contained in:
Peter Bergner 2018-11-29 19:25:47 +00:00 committed by Peter Bergner
parent 9bb3d6c4ef
commit 171954d816
4 changed files with 35 additions and 8 deletions

View File

@ -1,3 +1,9 @@
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):

View File

@ -4291,16 +4291,22 @@ rs6000_option_override_internal (bool global_init_p)
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");
}
}
}

View File

@ -1,3 +1,8 @@
2018-11-29 Peter Bergner <bergner@linux.ibm.com>
PR target/87496
* gcc.target/powerpc/pr87496.c: New test.
2018-11-29 Martin Sebor <msebor@redhat.com>
PR c/88172

View File

@ -0,0 +1,10 @@
/* 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 } */