https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110725
kargl at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Known to fail| |14.0 Known to work| |12.2.0 --- Comment #4 from kargl at gcc dot gnu.org --- (In reply to Richard Biener from comment #3) > That would make it accepts-invalid then? I'm not an expert with OpenMP, so cannot make a decision here. Note, the original code compiles with 12.2.0. I don't have 13.x installed for testing. While reducing the code to something much smaller, I notice the idiom of !$omp target !$omp teams !$omp distribute parallel do simd DO 75 I=1,M <Fortran code here> 75 CONTINUE !$omp end teams !$omp end target everywhere except for the one occurrence in the reduce code of !$omp target !$omp teams !$omp distribute parallel do simd DO 75 I=1,M U(I+1,N+1) = U(I+1,1) V(I,1) = V(I,N+1) 75 CONTINUE !$omp end teams U(1,N+1) = U(M+1,1) <-- This seems out-of-place when compared V(M+1,1) = V(1,N+1) <-- to all other code. !$omp end target END SUBROUTINE If I move the '!$omp end teams' down two lines, the code compiles. If I remove the two lines of Fortran code, the code compiles.