/* Utility routines for data type conversion for GCC.
- Copyright (C) 1987-2020 Free Software Foundation, Inc.
+ Copyright (C) 1987-2022 Free Software Foundation, Inc.
This file is part of GCC.
CASE_FLT_FN (BUILT_IN_CEIL):
CASE_FLT_FN_FLOATN_NX (BUILT_IN_CEIL):
/* Only convert in ISO C99 mode. */
- if (!targetm.libc_has_function (function_c99_misc))
+ if (!targetm.libc_has_function (function_c99_misc, intype))
break;
if (outprec < TYPE_PRECISION (integer_type_node)
|| (outprec == TYPE_PRECISION (integer_type_node)
CASE_FLT_FN (BUILT_IN_FLOOR):
CASE_FLT_FN_FLOATN_NX (BUILT_IN_FLOOR):
/* Only convert in ISO C99 mode. */
- if (!targetm.libc_has_function (function_c99_misc))
+ if (!targetm.libc_has_function (function_c99_misc, intype))
break;
if (outprec < TYPE_PRECISION (integer_type_node)
|| (outprec == TYPE_PRECISION (integer_type_node)
CASE_FLT_FN (BUILT_IN_ROUND):
CASE_FLT_FN_FLOATN_NX (BUILT_IN_ROUND):
/* Only convert in ISO C99 mode and with -fno-math-errno. */
- if (!targetm.libc_has_function (function_c99_misc)
+ if (!targetm.libc_has_function (function_c99_misc, intype)
|| flag_errno_math)
break;
if (outprec < TYPE_PRECISION (integer_type_node)
CASE_FLT_FN (BUILT_IN_RINT):
CASE_FLT_FN_FLOATN_NX (BUILT_IN_RINT):
/* Only convert in ISO C99 mode and with -fno-math-errno. */
- if (!targetm.libc_has_function (function_c99_misc)
+ if (!targetm.libc_has_function (function_c99_misc, intype)
|| flag_errno_math)
break;
if (outprec < TYPE_PRECISION (integer_type_node)
&& POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (arg1, 0))))
break;
- if (outprec >= BITS_PER_WORD
- || targetm.truly_noop_truncation (outprec, inprec)
- || inprec > TYPE_PRECISION (TREE_TYPE (arg0))
- || inprec > TYPE_PRECISION (TREE_TYPE (arg1)))
- {
- tree tem = do_narrow (loc, ex_form, type, arg0, arg1,
- expr, inprec, outprec, dofold);
- if (tem)
- return tem;
- }
+ tree tem = do_narrow (loc, ex_form, type, arg0, arg1,
+ expr, inprec, outprec, dofold);
+ if (tem)
+ return tem;
}
break;