]> git.ipfire.org Git - thirdparty/gcc.git/commit
vect: Don't apply masks to operations on invariants [PR108979]
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 2 Mar 2023 16:39:50 +0000 (16:39 +0000)
committerRichard Sandiford <richard.sandiford@arm.com>
Thu, 2 Mar 2023 16:39:50 +0000 (16:39 +0000)
commit076d309e36c682176e9f85dc8593e6f2c9e6e75f
treec49d151b052b7ca152dd38b20b3927d5fe2def20
parent71afd0628419c5d670701cb35bc9860380c7d9fb
vect: Don't apply masks to operations on invariants [PR108979]

The loop body in the testcase contains an operation on invariants.
SLP detects this and can hoist/schedule the operation outside of
the loop.  However, after the fix for PR96373, we would try to
apply a loop mask to this operation, even though the mask is
defined in the loop.

The patch does what Richi suggested in the PR: suppress the
masking for externs and constants.

gcc/
PR tree-optimization/108979
* tree-vect-stmts.cc (vectorizable_operation): Don't mask
operations on invariants.

gcc/testsuite/
PR tree-optimization/108979
* gfortran.dg/vect/pr108979.f90: New test.
gcc/testsuite/gfortran.dg/vect/pr108979.f90 [new file with mode: 0644]
gcc/tree-vect-stmts.cc