]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR target/87496 (ICE in aggregate_value_p at gcc/function.c:2046)
authorPeter Bergner <bergner@linux.ibm.com>
Wed, 12 Dec 2018 17:20:41 +0000 (17:20 +0000)
committerPeter Bergner <bergner@gcc.gnu.org>
Wed, 12 Dec 2018 17:20:41 +0000 (11:20 -0600)
gcc/
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.

gcc/testsuite/
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.

From-SVN: r267062

gcc/ChangeLog
gcc/config/rs6000/rs6000.c
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/pr87496-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/pr87496-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/pr87496-3.c [new file with mode: 0644]

index 5ed2eb58e847c86d901241332e963817aeaa425f..deffd65cc604d508cb73a5592b4a913a4d2fbf5f 100644 (file)
@@ -1,3 +1,15 @@
+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.
index d377e24291350b54490e8f5d20e92eb5f149bba3..68dd95429fe683a7445e7857e540f2619a07514a 100644 (file)
@@ -4829,6 +4829,13 @@ rs6000_option_override_internal (bool global_init_p)
       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
@@ -4838,6 +4845,11 @@ rs6000_option_override_internal (bool global_init_p)
     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
index 5f4fbf91c5bfb860ca2140d9247230547bbc232b..09a9b077212b2e7abfef4a0f92b2eea4b88c4f0a 100644 (file)
@@ -21937,12 +21937,14 @@ Disable Book-E SPE ABI extensions for the current ABI@.
 @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
index a244a4ff8ae30343ea9c430ba6b7e4500d19970b..c63a9cce9f02d6278c3267cf3b0dbf0b3d4486ea 100644 (file)
@@ -1,3 +1,13 @@
+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
diff --git a/gcc/testsuite/gcc.target/powerpc/pr87496-1.c b/gcc/testsuite/gcc.target/powerpc/pr87496-1.c
new file mode 100644 (file)
index 0000000..691e440
--- /dev/null
@@ -0,0 +1,11 @@
+/* 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 } */
diff --git a/gcc/testsuite/gcc.target/powerpc/pr87496-2.c b/gcc/testsuite/gcc.target/powerpc/pr87496-2.c
new file mode 100644 (file)
index 0000000..b3e2f01
--- /dev/null
@@ -0,0 +1,10 @@
+/* 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 } */
diff --git a/gcc/testsuite/gcc.target/powerpc/pr87496-3.c b/gcc/testsuite/gcc.target/powerpc/pr87496-3.c
new file mode 100644 (file)
index 0000000..207680e
--- /dev/null
@@ -0,0 +1,9 @@
+/* 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 } */