diff options
author | Tamar Christina <tamar.christina@arm.com> | 2024-02-02 23:52:27 +0000 |
---|---|---|
committer | Tamar Christina <tamar.christina@arm.com> | 2024-02-02 23:55:47 +0000 |
commit | 85094e2aa6dba7908f053046f02dd443e8f65d72 (patch) | |
tree | ded5e1910aaeebc21251a0655c20f9c7700f6c62 /libphobos/src | |
parent | 48148a0bb6c05b68b9c8f867f5c5ee9d8f4dd996 (diff) | |
download | gcc-85094e2aa6dba7908f053046f02dd443e8f65d72.zip gcc-85094e2aa6dba7908f053046f02dd443e8f65d72.tar.gz gcc-85094e2aa6dba7908f053046f02dd443e8f65d72.tar.bz2 |
middle-end: check memory accesses in the destination block [PR113588].
When analyzing loads for early break it was always the intention that for the
exit where things get moved to we only check the loads that can be reached from
the condition.
However the main loop checks all loads and we skip the destination BB. As such
we never actually check the loads reachable from the COND in the last BB unless
this BB was also the exit chosen by the vectorizer.
This leads us to incorrectly vectorize the loop in the PR and in doing so access
out of bounds.
gcc/ChangeLog:
PR tree-optimization/113588
PR tree-optimization/113467
* tree-vect-data-refs.cc
(vect_analyze_data_ref_dependence): Choose correct dest and fix checks.
(vect_analyze_early_break_dependences): Update comments.
gcc/testsuite/ChangeLog:
PR tree-optimization/113588
PR tree-optimization/113467
* gcc.dg/vect/vect-early-break_108-pr113588.c: New test.
* gcc.dg/vect/vect-early-break_109-pr113588.c: New test.
Diffstat (limited to 'libphobos/src')
0 files changed, 0 insertions, 0 deletions