re PR target/87496 (ICE in aggregate_value_p at gcc/function.c:2046)
authorPeter Bergner <bergner@linux.ibm.com>
Thu, 29 Nov 2018 19:25:47 +0000 (19:25 +0000)
committerPeter Bergner <bergner@gcc.gnu.org>
Thu, 29 Nov 2018 19:25:47 +0000 (13:25 -0600)
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

gcc/ChangeLog
gcc/config/rs6000/rs6000.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/pr87496.c [new file with mode: 0644]

index 8cf443f6b9f7fa3e00e33eef35f11930b1f63eff..0985331bc658e0131d0e1ef8263e84d36b2fd17c 100644 (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):
index b2fb5c898b387b3b7ba8ad5feff1fc2e59f0fa82..02e69c103ec60cb06af1676e5c7ccf0e107812f1 100644 (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");
+           }
        }
     }
 
index ecb1ad6095d8d8bec10f670001d97b73d0d7dfee..4a100149165ac199035cfc874d43eb112206b2b1 100644 (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
diff --git a/gcc/testsuite/gcc.target/powerpc/pr87496.c b/gcc/testsuite/gcc.target/powerpc/pr87496.c
new file mode 100644 (file)
index 0000000..b2ebc46
--- /dev/null
@@ -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 } */