Hi Jakub, hi all, updated patch included, i.e. avoiding 'count' for 'j' when a 'j.0' would do (i.e. only local var without the different step calculation). I also now reject if there is a non-unit step on the loop using an outer var. Eventually still to be done: replace the 'sorry' by working code, i.e. implement the suggestions to handle some/all non-unit iteration steps as proposed in this thread. On 20.01.23 18:39, Jakub Jelinek wrote: > I think instead of non-unity etc. it is better to talk about constant > step 1 or -1. I concur. > The actual problem with non-simple loops for non-rectangular loops is > both in case it is an inner loop which uses some outer loop's iterator, > or if it is outer loop whose iterator is used, both of those cases > will not be handled properly. I have now added a check for the other case as well. Just to confirm, the following is fine, isn't it? !$omp simd collapse(4) do i = 1, 10, 2 do outer_var = 1, 10 ! step = + 1 do j = 1, 10, 2 do inner_var = 1, outer_var ! step = 1 i.e. both the inner_var and outer_var have 'step = 1', even if other loops in the 'collapse' have step != 1. I think it should be fine. OK mainline? Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955