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.