aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2021-07-07 11:41:03 +0200
committerRichard Biener <rguenther@suse.de>2021-07-07 13:48:26 +0200
commit9f34b780b0461ec7b2b2defe96e44ab616ea2aa3 (patch)
tree2d8d45ef233f09fc56f46fb6926198c55d5727db /gcc/ada
parent98bfd845e93937d92ca844d7fa7e853ad51c6193 (diff)
downloadgcc-9f34b780b0461ec7b2b2defe96e44ab616ea2aa3.zip
gcc-9f34b780b0461ec7b2b2defe96e44ab616ea2aa3.tar.gz
gcc-9f34b780b0461ec7b2b2defe96e44ab616ea2aa3.tar.bz2
tree-optimization/99728 - improve LIM for loops with aggregate copies
This improves LIM by recording aggregate copies for disambiguation purposes instead of as UNANALYZABLE_MEM which will prevent any invariant or store motion across it. This allows four of the six references in the loop of the testcase to be promoted. 2021-07-07 Richard Biener <rguenther@suse.de> PR tree-optimization/99728 * tree-ssa-loop-im.c (gather_mem_refs_stmt): Record aggregate copies. (mem_refs_may_alias_p): Add assert we handled aggregate copies elsewhere. (sm_seq_valid_bb): Give up when running into aggregate copies. (ref_indep_loop_p): Handle aggregate copies as never being invariant themselves but allow other refs to be disambiguated against them. (can_sm_ref_p): Do not try to apply store-motion to aggregate copies. * g++.dg/opt/pr99728.C: New testcase.
Diffstat (limited to 'gcc/ada')
0 files changed, 0 insertions, 0 deletions