diff options
author | Richard Biener <rguenther@suse.de> | 2024-06-25 14:04:31 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2024-06-26 18:53:08 +0200 |
commit | 629257bcb81434117f1e9c68479032563176dc0c (patch) | |
tree | fd5ef42afc1c0dd042f3a0fdd583400711662de0 /gcc/tree-vect-loop.cc | |
parent | 86a3dbeb6c6a36f8cf97c66cef83c9bc3ad82027 (diff) | |
download | gcc-629257bcb81434117f1e9c68479032563176dc0c.zip gcc-629257bcb81434117f1e9c68479032563176dc0c.tar.gz gcc-629257bcb81434117f1e9c68479032563176dc0c.tar.bz2 |
tree-optimization/115629 - missed tail merging
The following fixes a missed tail-merging observed for the testcase
in PR115629. The issue is that when deps_ok_for_redirect doesn't
compute both would be valid prevailing blocks it rejects the merge.
The following instead makes sure to record the working block as
prevailing. Also stmt comparison fails for indirect references
and is not handling memory references thoroughly, failing to unify
array indices and pointers indirected. The following attempts to
fix this.
PR tree-optimization/115629
* tree-ssa-tail-merge.cc (gimple_equal_p): Handle
memory references better.
(deps_ok_for_redirect): Handle the case not both blocks
are considered a valid prevailing block.
* gcc.dg/tree-ssa/tail-merge-1.c: New testcase.
Diffstat (limited to 'gcc/tree-vect-loop.cc')
0 files changed, 0 insertions, 0 deletions