middle-end/94188 fix fold of addr expression generation
authorRichard Biener <rguenther@suse.de>
Wed, 18 Mar 2020 08:13:17 +0000 (09:13 +0100)
committerRichard Biener <rguenther@suse.de>
Wed, 18 Mar 2020 08:14:48 +0000 (09:14 +0100)
commit4e3d3e40726e1b68bf52fa205c68495124ea60b8
treec40b5b145bca1448d3196a5857b9fd30bbd77c8f
parentaf8656be8df68ac26840f7844430fd595255ebd2
middle-end/94188 fix fold of addr expression generation

This adds a missing type conversion to build_fold_addr_expr and adjusts
fallout - build_fold_addr_expr was used as a convenience to build an
ADDR_EXPR but some callers do not expect the result to be simplified
to something else.

2020-03-18  Richard Biener  <rguenther@suse.de>

PR middle-end/94188
* fold-const.c (build_fold_addr_expr): Convert address to
correct type.
* asan.c (maybe_create_ssa_name): Strip useless type conversions.
* gimple-fold.c (gimple_fold_stmt_to_constant_1): Use build1
to build the ADDR_EXPR which we don't really want to simplify.
* tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
* tree-ssa-loop-im.c (gather_mem_refs_stmt): Likewise.
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
(simplify_builtin_call): Strip useless type conversions.
* tree-ssa-strlen.c (new_strinfo): Likewise.

* gcc.dg/pr94188.c: New testcase.
gcc/ChangeLog
gcc/asan.c
gcc/fold-const.c
gcc/gimple-fold.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr94188.c [new file with mode: 0644]
gcc/tree-ssa-dom.c
gcc/tree-ssa-forwprop.c
gcc/tree-ssa-loop-im.c
gcc/tree-ssa-strlen.c