diff options
author | Jan Hubicka <jh@suse.cz> | 2020-10-27 09:03:45 +0100 |
---|---|---|
committer | Jan Hubicka <jh@suse.cz> | 2020-10-27 09:03:45 +0100 |
commit | 7f227da3e603cffe7659d404f094e07507a993b1 (patch) | |
tree | 39b6f571d5e527fdd04d1d151e862539cb26517a /gcc | |
parent | 5707996c14fcbbe9e71f97e703f0f5767b1f0611 (diff) | |
download | gcc-7f227da3e603cffe7659d404f094e07507a993b1.zip gcc-7f227da3e603cffe7659d404f094e07507a993b1.tar.gz gcc-7f227da3e603cffe7659d404f094e07507a993b1.tar.bz2 |
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.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/tree-ssa-ccp.c | 25 |
1 files 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 <gcall *> (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); } |