https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114635

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The OpenMP safelen clause argument is a scalar integer, so using poly_int for
something that must be an int doesn't make sense.
Though, the above testcase actually doesn't use safelen clause, so safelen is
there effectively infinity.
The issue is how we represent the clauses like reduction on simd.
The design is that they are represented as initially large magic "omp simd
array" arrays with constant number of iterations derived from the maximum
possible vectorization factor, and then the vectorizer either shrinks those two
the actual vectorization factor (if different from the old constant) or to [1]
array if vectorization wasn't possible and we've in fact used vectorization
factor of 1.

Now, with SVE/RISCV vectors the actual vectorization factor is a poly_int
rather than constant.  One possibility would be to use VLA arrays in those
cases, but then it will be hard to undo that later, or allow both shrinking and
growing the arrays and even turning them into VLA-like ones.

Reply via email to