diff options
author | Richard Biener <rguenther@suse.de> | 2024-12-02 11:07:46 +0100 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2024-12-02 14:04:35 +0100 |
commit | 5ab3f091b3eb42795340d3c9cea8aaec2060693c (patch) | |
tree | b2a3c3aaaadad02f228425810a67ff8cfb7e8a87 /gcc/fortran | |
parent | e36eae19f3a4cc9e5efa9ebfa31e081c7ee52fdc (diff) | |
download | gcc-5ab3f091b3eb42795340d3c9cea8aaec2060693c.zip gcc-5ab3f091b3eb42795340d3c9cea8aaec2060693c.tar.gz gcc-5ab3f091b3eb42795340d3c9cea8aaec2060693c.tar.bz2 |
tree-optimization/116352 - SLP scheduling and stmt order
The PR uncovers unchecked constraints on the ability to code-generate
with SLP but also latent issues with regard to stmt order checking
since loop (early-break) and BB (for quite some time) vectorization
are no longer constraint to single-BBs. In particular get_later_stmt
simply compares UIDs of stmts, but that's only reliable when they
are in the same BB.
For the PR in question the problematical case is demoting a SLP node
to external which fails to check we can actually code generate this
in the way we do (using get_later_stmt). The following thus adds
checking that we demote to external only when all defs are from
the same BB.
We no longer vectorize gcc.dg/vect/bb-slp-49.c but the testcase was
for a wrong-code issue and the vectorization done is a no-op.
PR tree-optimization/116352
PR tree-optimization/117876
* tree-vect-slp.cc (vect_slp_can_convert_to_external): New.
(vect_slp_convert_to_external): Call it.
(vect_build_slp_tree_2): Likewise.
* gcc.dg/vect/pr116352.c: New testcase.
* gcc.dg/vect/bb-slp-49.c: Remove vectorization check.
Diffstat (limited to 'gcc/fortran')
0 files changed, 0 insertions, 0 deletions