tree fold_const_call (combined_fn fn, tree type, tree arg) { switch (fn) { case CFN_BUILT_IN_STRLEN: if (const char *str = c_getstr (arg)) return build_int_cst (type, strlen (str)); return NULL_TREE; CASE_CFN_NAN: CASE_FLT_FN_FLOATN_NX (CFN_BUILT_IN_NAN): case CFN_BUILT_IN_NAND32: case CFN_BUILT_IN_NAND64: case CFN_BUILT_IN_NAND128: return fold_const_builtin_nan (type, arg, true); CASE_CFN_NANS: CASE_FLT_FN_FLOATN_NX (CFN_BUILT_IN_NANS): return fold_const_builtin_nan (type, arg, false); default: return fold_const_call_1 (fn, type, arg); } }
tree fold_const_call (combined_fn fn, tree type, tree arg) { switch (fn) { case CFN_BUILT_IN_STRLEN: if (const char *str = c_getstr (arg)) return build_int_cst (type, strlen (str)); return NULL_TREE; CASE_CFN_NAN: CASE_FLT_FN_FLOATN_NX (CFN_BUILT_IN_NAN): case CFN_BUILT_IN_NAND32: case CFN_BUILT_IN_NAND64: case CFN_BUILT_IN_NAND128: return fold_const_builtin_nan (type, arg, true); CASE_CFN_NANS: CASE_FLT_FN_FLOATN_NX (CFN_BUILT_IN_NANS): return fold_const_builtin_nan (type, arg, false); case CFN_REDUC_PLUS: return fold_const_reduction (type, arg, PLUS_EXPR); case CFN_REDUC_MAX: return fold_const_reduction (type, arg, MAX_EXPR); case CFN_REDUC_MIN: return fold_const_reduction (type, arg, MIN_EXPR); case CFN_REDUC_AND: return fold_const_reduction (type, arg, BIT_AND_EXPR); case CFN_REDUC_IOR: return fold_const_reduction (type, arg, BIT_IOR_EXPR); case CFN_REDUC_XOR: return fold_const_reduction (type, arg, BIT_XOR_EXPR); default: return fold_const_call_1 (fn, type, arg); } }