From 7f227da3e603cffe7659d404f094e07507a993b1 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Tue, 27 Oct 2020 09:03:45 +0100 Subject: [PATCH] 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. --- gcc/tree-ssa-ccp.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index 0432fe5..ef44e66 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); } -- 2.7.4