https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122236
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The wording surely does allow some reordering, in particular that you can execute a couple of adjacent iterations concurrently. You can't reorder them arbitrarily though, you can't e.g. first do 1st, 22nd, 30th, 48th iteration, then 47th, 29th, 21st, 2nd or something like that, you can only do 1st-nth together, then nth+1-2*nth, etc. Note, generally the order is observable, you could e.g. have a reduction being increased by 1 in each iteration and save into an array which iterations were done at which point. I believe with order(unconstrainted) all bets are off (but then it e.g. also requires that there are no OpenMP API calls in the body and some other limitations).
