diff options
author | Richard Biener <rguenther@suse.de> | 2023-03-30 11:32:19 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2023-03-30 13:02:19 +0200 |
commit | 1d0ba4467dd9cad11eb9ff547442e3ce6292b892 (patch) | |
tree | daf4e2e864fd771d9e662346334bdf1e4b1d370c /gcc/range-op-float.cc | |
parent | ee6ae8cb4793041590b479346433ed786a86985d (diff) | |
download | gcc-1d0ba4467dd9cad11eb9ff547442e3ce6292b892.zip gcc-1d0ba4467dd9cad11eb9ff547442e3ce6292b892.tar.gz gcc-1d0ba4467dd9cad11eb9ff547442e3ce6292b892.tar.bz2 |
tree-optimization/109342 - wrong code with edge equivalences in VN
The following testcase shows a problem in how we query valitity for
equivalences on edges when the edge is a backedge and thus refering
to a block thats later in the iteration order we use for VN. That
causes the dominated_by_p_w_unex helper to look at edge executable
state that's not yet computed and thus still at optimistic not
executable state.
The following makes sure to use a plain dominance check in these cases.
PR tree-optimization/109342
* tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
overload for edge. When that edge is a backedge use
dominated_by_p directly.
* g++.dg/torture/pr109342.C: New testcase.
Diffstat (limited to 'gcc/range-op-float.cc')
0 files changed, 0 insertions, 0 deletions