https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67986
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The wording in the 4.0 and older versions is non-trivial to check at compile time, sure, there are easy cases that can be detected, but otherwise whether a value changes is hard to analyze at compile time. In OpenMP 4.5, there is additional restriction that the iterators of associated loops can't be even mentioned in the b, lb and incr expressions, so even j = i * 0 will be invalid, and then it is something that can be easily detected at compile time. For OpenMP 5.0, there are vague plans to add support for certain triangular collapsed loops, but what the exact wording will be is still undecided.