Do not define DFP builtin functions, if DFP has been disabled.
authorPeter Bergner <bergner@linux.ibm.com>
Wed, 27 Nov 2019 20:55:56 +0000 (20:55 +0000)
committerPeter Bergner <bergner@gcc.gnu.org>
Wed, 27 Nov 2019 20:55:56 +0000 (14:55 -0600)
PR bootstrap/92661
* config/rs6000/rs6000-call.c: (def_builtin): Do not define the
builtin if we don't have an actual type.
(builtin_function_type): If the builtin function uses a DFP type
and decimal float has been disabled, then return NULL_TREE.

From-SVN: r278783

gcc/ChangeLog
gcc/config/rs6000/rs6000-call.c

index 7dbf824938f2f0ce0b1900a2fd94599b1228b2db..a788dc4762f5b6ab4e355963bf6ef72ee49d0f4c 100644 (file)
@@ -1,3 +1,11 @@
+2019-11-27  Peter Bergner <bergner@linux.ibm.com>
+
+       PR bootstrap/92661
+       * config/rs6000/rs6000-call.c: (def_builtin): Do not define the
+       builtin if we don't have an actual type.
+       (builtin_function_type): If the builtin function uses a DFP type
+       and decimal float has been disabled, then return NULL_TREE.
+
 2019-11-27  Jakub Jelinek  <jakub@redhat.com>
 
        PR rtl-optimization/92510
index 85ff85299d1c95c5ad37818ce432185bf1370e22..d332afb9c73ce39894b61e2e59ea16e265cafee5 100644 (file)
@@ -2935,6 +2935,10 @@ def_builtin (const char *name, tree type, enum rs6000_builtins code)
   unsigned classify = rs6000_builtin_info[(int)code].attr;
   const char *attr_string = "";
 
+  /* Don't define the builtin if it doesn't have a type.  See PR92661.  */
+  if (type == NULL_TREE)
+    return;
+
   gcc_assert (name != NULL);
   gcc_assert (IN_RANGE ((int)code, 0, (int)RS6000_BUILTIN_COUNT));
 
@@ -7702,6 +7706,11 @@ builtin_function_type (machine_mode mode_ret, machine_mode mode_arg0,
   if (!ret_type && h.uns_p[0])
     ret_type = builtin_mode_to_type[h.mode[0]][0];
 
+  /* If the required decimal float type has been disabled,
+     then return NULL_TREE.  */
+  if (!ret_type && DECIMAL_FLOAT_MODE_P (h.mode[0]))
+    return NULL_TREE;
+
   if (!ret_type)
     fatal_error (input_location,
                 "internal error: builtin function %qs had an unexpected "
@@ -7719,6 +7728,11 @@ builtin_function_type (machine_mode mode_ret, machine_mode mode_arg0,
       if (!arg_type[i] && uns_p)
        arg_type[i] = builtin_mode_to_type[m][0];
 
+      /* If the required decimal float type has been disabled,
+        then return NULL_TREE.  */
+      if (!arg_type[i] && DECIMAL_FLOAT_MODE_P (m))
+       return NULL_TREE;
+
       if (!arg_type[i])
        fatal_error (input_location,
                     "internal error: builtin function %qs, argument %d "