tree-optimization/112961 - include latch in if-conversion CSE
commit878cb5acf0c499702ffd315e273f55e8bd0970b8
authorRichard Biener <rguenther@suse.de>
Tue, 12 Dec 2023 13:01:47 +0000 (12 14:01 +0100)
committerRichard Biener <rguenther@suse.de>
Tue, 12 Dec 2023 14:13:15 +0000 (12 15:13 +0100)
tree07d35ca985dce2f1cca214fbd366b2161bc76c66
parentdabd94da0c78f4beb0c2c25f38ab6de2d8417497
tree-optimization/112961 - include latch in if-conversion CSE

The following makes sure to also process the (empty) latch when
performing CSE on the if-converted loop body.  That's important
to get all uses of copies propagated out on the backedge as well.
To avoid CSE on the PHI nodes itself which is prohibitive
(see PR90402) this temporarily adds a fake entry edge to the loop.

PR tree-optimization/112961
* tree-if-conv.cc (tree_if_conversion): Instead of excluding
the latch block from VN, add a fake entry edge.

* g++.dg/vect/pr112961.cc: New testcase.
gcc/testsuite/g++.dg/vect/pr112961.cc [new file with mode: 0644]
gcc/tree-if-conv.cc