On 10/21/22 09:42, Jakub Jelinek wrote:
Hi!

On top of the pending
https://gcc.gnu.org/pipermail/gcc-patches/2022-October/603665.html
https://gcc.gnu.org/pipermail/gcc-patches/2022-October/604080.html
the following patch adds some complex builtins which have libm
implementation in glibc 2.26 and later on various arches.
It is needed for libstdc++ _Float128 support when long double is not
IEEE quad.

Tested on x86_64-linux, ok for trunk?

2022-10-21  Jakub Jelinek  <ja...@redhat.com>

        * builtin-types.def (BT_COMPLEX_FLOAT16, BT_COMPLEX_FLOAT32,
        BT_COMPLEX_FLOAT64, BT_COMPLEX_FLOAT128, BT_COMPLEX_FLOAT32X,
        BT_COMPLEX_FLOAT64X, BT_COMPLEX_FLOAT128X,
        BT_FN_COMPLEX_FLOAT16_COMPLEX_FLOAT16,
        BT_FN_COMPLEX_FLOAT32_COMPLEX_FLOAT32,
        BT_FN_COMPLEX_FLOAT64_COMPLEX_FLOAT64,
        BT_FN_COMPLEX_FLOAT128_COMPLEX_FLOAT128,
        BT_FN_COMPLEX_FLOAT32X_COMPLEX_FLOAT32X,
        BT_FN_COMPLEX_FLOAT64X_COMPLEX_FLOAT64X,
        BT_FN_COMPLEX_FLOAT128X_COMPLEX_FLOAT128X,
        BT_FN_FLOAT16_COMPLEX_FLOAT16, BT_FN_FLOAT32_COMPLEX_FLOAT32,
        BT_FN_FLOAT64_COMPLEX_FLOAT64, BT_FN_FLOAT128_COMPLEX_FLOAT128,
        BT_FN_FLOAT32X_COMPLEX_FLOAT32X, BT_FN_FLOAT64X_COMPLEX_FLOAT64X,
        BT_FN_FLOAT128X_COMPLEX_FLOAT128X,
        BT_FN_COMPLEX_FLOAT16_COMPLEX_FLOAT16_COMPLEX_FLOAT16,
        BT_FN_COMPLEX_FLOAT32_COMPLEX_FLOAT32_COMPLEX_FLOAT32,
        BT_FN_COMPLEX_FLOAT64_COMPLEX_FLOAT64_COMPLEX_FLOAT64,
        BT_FN_COMPLEX_FLOAT128_COMPLEX_FLOAT128_COMPLEX_FLOAT128,
        BT_FN_COMPLEX_FLOAT32X_COMPLEX_FLOAT32X_COMPLEX_FLOAT32X,
        BT_FN_COMPLEX_FLOAT64X_COMPLEX_FLOAT64X_COMPLEX_FLOAT64X,
        BT_FN_COMPLEX_FLOAT128X_COMPLEX_FLOAT128X_COMPLEX_FLOAT128X): New.
        * builtins.def (CABS_TYPE, CACOSH_TYPE, CARG_TYPE, CASINH_TYPE,
        CPOW_TYPE, CPROJ_TYPE): Define and undefine later.
        (BUILT_IN_CABS, BUILT_IN_CACOSH, BUILT_IN_CACOS, BUILT_IN_CARG,
        BUILT_IN_CASINH, BUILT_IN_CASIN, BUILT_IN_CATANH, BUILT_IN_CATAN,
        BUILT_IN_CCOSH, BUILT_IN_CCOS, BUILT_IN_CEXP, BUILT_IN_CLOG,
        BUILT_IN_CPOW, BUILT_IN_CPROJ, BUILT_IN_CSINH, BUILT_IN_CSIN,
        BUILT_IN_CSQRT, BUILT_IN_CTANH, BUILT_IN_CTAN): Add
        DEF_EXT_LIB_FLOATN_NX_BUILTINS.
        * fold-const-call.cc (fold_const_call_sc, fold_const_call_cc,
        fold_const_call_ccc): Add various CASE_CFN_*_FN: cases when
        CASE_CFN_* is present.
        * gimple-ssa-backprop.cc (backprop::process_builtin_call_use):
        Likewise.
        * builtins.cc (expand_builtin, fold_builtin_1): Likewise.
        * fold-const.cc (negate_mathfn_p, tree_expr_finite_p,
        tree_expr_maybe_signaling_nan_p, tree_expr_maybe_nan_p,
        tree_expr_maybe_real_minus_zero_p, tree_call_nonnegative_warnv_p):
        Likewise.

OK

jeff


Reply via email to