From: Jan Hubicka Date: Tue, 27 Oct 2020 08:03:45 +0000 (+0100) Subject: Use EAF_RETURN_ARG in tree-ssa-ccp.c X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7f227da3e603cffe7659d404f094e07507a993b1;p=gcc.git Use EAF_RETURN_ARG in tree-ssa-ccp.c * tree-ssa-ccp.c (evaluate_stmt): Use EAF_RETURN_ARG; do not handle string buitings specially. --- diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index 0432fe5513d..ef44e66ce8b 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -1796,6 +1796,7 @@ evaluate_stmt (gimple *stmt) ccp_lattice_t likelyvalue = likely_value (stmt); bool is_constant = false; unsigned int align; + bool ignore_return_flags = false; if (dump_file && (dump_flags & TDF_DETAILS)) { @@ -1965,22 +1966,9 @@ evaluate_stmt (gimple *stmt) val.mask = ~((HOST_WIDE_INT) align / BITS_PER_UNIT - 1); break; - /* These builtins return their first argument, unmodified. */ - case BUILT_IN_MEMCPY: - case BUILT_IN_MEMMOVE: - case BUILT_IN_MEMSET: - case BUILT_IN_STRCPY: - case BUILT_IN_STRNCPY: - case BUILT_IN_MEMCPY_CHK: - case BUILT_IN_MEMMOVE_CHK: - case BUILT_IN_MEMSET_CHK: - case BUILT_IN_STRCPY_CHK: - case BUILT_IN_STRNCPY_CHK: - val = get_value_for_expr (gimple_call_arg (stmt, 0), true); - break; - case BUILT_IN_ASSUME_ALIGNED: val = bit_value_assume_aligned (stmt, NULL_TREE, val, false); + ignore_return_flags = true; break; case BUILT_IN_ALIGNED_ALLOC: @@ -2049,6 +2037,15 @@ evaluate_stmt (gimple *stmt) if (attrs) val = bit_value_assume_aligned (stmt, attrs, val, true); } + int flags = ignore_return_flags + ? 0 : gimple_call_return_flags (as_a (stmt)); + if (flags & ERF_RETURNS_ARG + && (flags & ERF_RETURN_ARG_MASK) < gimple_call_num_args (stmt)) + { + val = get_value_for_expr + (gimple_call_arg (stmt, + flags & ERF_RETURN_ARG_MASK), true); + } } is_constant = (val.lattice_val == CONSTANT); }