diff options
author | Richard Biener <rguenther@suse.de> | 2020-04-30 10:47:15 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2020-05-04 14:14:36 +0200 |
commit | f9e1ea10e657af9fb02fafecf1a600740fd34409 (patch) | |
tree | 3bbed9af6d91c30c5e64d64f17aa58214c377f97 /libstdc++-v3/ChangeLog | |
parent | 375a77925c320a273d3b1ef3182f29f31aaa8edf (diff) | |
download | gcc-f9e1ea10e657af9fb02fafecf1a600740fd34409.zip gcc-f9e1ea10e657af9fb02fafecf1a600740fd34409.tar.gz gcc-f9e1ea10e657af9fb02fafecf1a600740fd34409.tar.bz2 |
tree-optimization/39612 - avoid issueing loads in SM when possible
Currently store-motion emits a load of the value in the loop
preheader even when the original loop does not contain any read
of the reference. This avoids doing this. In the conditional
store-motion case we need to mark the sunk stores with no-warning
since the control dependence is too tricky to figure out for
the uninit warning.
2020-05-04 Richard Biener <rguenther@suse.de>
PR tree-optimization/39612
* tree-ssa-loop-im.c (im_mem_ref::loaded): New member.
(set_ref_loaded_in_loop): New.
(mark_ref_loaded): Likewise.
(gather_mem_refs_stmt): Call mark_ref_loaded for loads.
(execute_sm): Avoid issueing a load when it was not there.
(execute_sm_if_changed): Avoid issueing warnings for the
conditional store.
* gcc.dg/tree-ssa/pr39612.c: New testcase.
Diffstat (limited to 'libstdc++-v3/ChangeLog')
0 files changed, 0 insertions, 0 deletions