From a92cc0da1c4c85b5ac8bb3eb013946ee9ad3a40f Mon Sep 17 00:00:00 2001 From: Peter Bergner Date: Wed, 27 Nov 2019 20:55:56 +0000 Subject: Do not define DFP builtin functions, if DFP has been disabled. 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/config/rs6000/rs6000-call.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'gcc/config') diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c index 85ff852..d332afb 100644 --- a/gcc/config/rs6000/rs6000-call.c +++ b/gcc/config/rs6000/rs6000-call.c @@ -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 " -- cgit v1.1