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.

Reply via email to