diff options
author | Richard Biener <rguenther@suse.de> | 2020-01-31 13:28:11 +0100 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2020-02-04 10:08:05 +0100 |
commit | 5f0653a8b75a5ad5a5405a27dd92d3a5759eed4c (patch) | |
tree | 8ec13218e79d1e894acad91898dce6bcc74e585e /libcpp/errors.c | |
parent | fc98d038618b792c413212759057b2125507d3ef (diff) | |
download | gcc-5f0653a8b75a5ad5a5405a27dd92d3a5759eed4c.zip gcc-5f0653a8b75a5ad5a5405a27dd92d3a5759eed4c.tar.gz gcc-5f0653a8b75a5ad5a5405a27dd92d3a5759eed4c.tar.bz2 |
tree-optimization/91123 - restore redundant store removal
Redundant store removal in FRE was restricted for correctness reasons.
The following extends correctness fixes required to memcpy/aggregate
copy translation. The main change is that we no longer insert
references rewritten to cover such aggregate copies into the hashtable
but the original one.
2020-02-04 Richard Biener <rguenther@suse.de>
PR tree-optimization/91123
* tree-ssa-sccvn.c (vn_walk_cb_data::finish): New method.
(vn_walk_cb_data::last_vuse): New member.
(vn_walk_cb_data::saved_operands): Likewsie.
(vn_walk_cb_data::~vn_walk_cb_data): Release saved_operands.
(vn_walk_cb_data::push_partial_def): Use finish.
(vn_reference_lookup_2): Update last_vuse and use finish if
we've saved operands.
(vn_reference_lookup_3): Use finish and update calls to
push_partial_defs everywhere. When translating through
memcpy or aggregate copies save off operands and alias-set.
(eliminate_dom_walker::eliminate_stmt): Restore VN_WALKREWRITE
operation for redundant store removal.
* gcc.dg/tree-ssa/ssa-fre-85.c: New testcase.
Diffstat (limited to 'libcpp/errors.c')
0 files changed, 0 insertions, 0 deletions