static bool fold_const_call_sss (real_value *result, combined_fn fn, const real_value *arg0, const wide_int_ref &arg1, const real_format *format) { switch (fn) { CASE_CFN_LDEXP: return fold_const_builtin_load_exponent (result, arg0, arg1, format); CASE_CFN_SCALBN: CASE_CFN_SCALBLN: return (format->b == 2 && fold_const_builtin_load_exponent (result, arg0, arg1, format)); CASE_CFN_POWI: /* Avoid the folding if flag_signaling_nans is on and operand is a signaling NaN. */ if (!flag_unsafe_math_optimizations && flag_signaling_nans && REAL_VALUE_ISSIGNALING_NAN (*arg0)) return false; real_powi (result, format, arg0, arg1.to_shwi ()); return true; default: return false; } }
static bool fold_const_call_sss (real_value *result, built_in_function fn, const real_value *arg0, const wide_int_ref &arg1, const real_format *format) { switch (fn) { CASE_FLT_FN (BUILT_IN_LDEXP): return fold_const_builtin_load_exponent (result, arg0, arg1, format); CASE_FLT_FN (BUILT_IN_SCALBN): CASE_FLT_FN (BUILT_IN_SCALBLN): return (format->b == 2 && fold_const_builtin_load_exponent (result, arg0, arg1, format)); CASE_FLT_FN (BUILT_IN_POWI): real_powi (result, format, arg0, arg1.to_shwi ()); return true; default: return false; } }