aboutsummaryrefslogtreecommitdiff
path: root/gcc/value-range.h
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2023-07-26 15:23:45 +0200
committerRichard Biener <rguenther@suse.de>2023-08-03 13:21:32 +0200
commit46c8c225455273ce7f7da7cc5707aed54f23e78d (patch)
tree6d2af8d18883c039ba376d316026d17a8ed6283c /gcc/value-range.h
parent021a0cd4494463026226a10d9556a0eedc422e5e (diff)
downloadgcc-46c8c225455273ce7f7da7cc5707aed54f23e78d.zip
gcc-46c8c225455273ce7f7da7cc5707aed54f23e78d.tar.gz
gcc-46c8c225455273ce7f7da7cc5707aed54f23e78d.tar.bz2
Improve sinking with unrelated defs
statement_sink_location for loads is currently confused about stores that are not on the paths we are sinking across. The following replaces the logic that tries to ensure we are not sinking across stores by instead of walking all immediate virtual uses and then checking whether found stores are on the paths we sink through with checking the live virtual operand at the sinking location. To obtain the live virtual operand we rely on the new virtual_operand_live class which provides an overall cheaper and also more precise way to check the constraints. * tree-ssa-sink.cc: Include tree-ssa-live.h. (pass_sink_code::execute): Instantiate virtual_operand_live and pass it down. (sink_code_in_bb): Pass down virtual_operand_live. (statement_sink_location): Get virtual_operand_live and verify we are not sinking loads across stores by looking up the live virtual operand at the sink location. * gcc.dg/tree-ssa/ssa-sink-20.c: New testcase.
Diffstat (limited to 'gcc/value-range.h')
0 files changed, 0 insertions, 0 deletions