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.