tree-vect-patterns: Don't create over widening patterns for stmts used in reductions...
authorJakub Jelinek <jakub@redhat.com>
Tue, 2 Feb 2021 09:32:23 +0000 (10:32 +0100)
committerJakub Jelinek <jakub@redhat.com>
Tue, 2 Feb 2021 09:32:23 +0000 (10:32 +0100)
commit1592b74350a0311e4c95a0192ea9c943847e7bc0
treee301c3575710b10519cca077ac0b275308ed6f7d
parenteedda4e160856b7ac0c533ac9445161d0fd88660
tree-vect-patterns: Don't create over widening patterns for stmts used in reductions [PR98848]

As discussed in the PR, the reduction code isn't able to cope with type
promotions/demotions in the reduction computation, so if we recognize an
over-widening pattern that has vect_reduction_def type, we most likely make
it non-vectorizable.

2021-02-02  Jakub Jelinek  <jakub@redhat.com>

PR tree-optimization/98848
* tree-vect-patterns.c (vect_recog_over_widening_pattern): Punt if
STMT_VINFO_DEF_TYPE (last_stmt_info) is vect_reduction_def.

* gcc.dg/vect/pr98848.c: New test.
* gcc.dg/vect/pr92205.c: Remove xfail.
gcc/testsuite/gcc.dg/vect/pr92205.c
gcc/testsuite/gcc.dg/vect/pr98848.c [new file with mode: 0644]
gcc/tree-vect-patterns.c