aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-expr.cc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2024-12-02 11:07:46 +0100
committerRichard Biener <rguenth@gcc.gnu.org>2024-12-02 14:04:35 +0100
commit5ab3f091b3eb42795340d3c9cea8aaec2060693c (patch)
treeb2a3c3aaaadad02f228425810a67ff8cfb7e8a87 /gcc/fortran/trans-expr.cc
parente36eae19f3a4cc9e5efa9ebfa31e081c7ee52fdc (diff)
downloadgcc-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/trans-expr.cc')
0 files changed, 0 insertions, 0 deletions