Skip to content

[flang][OpenMP][regression] Flang compiles bad openmp semantics. #169536

@scamp-nvidia

Description

@scamp-nvidia

In our testing system, we identifed another issue that appears to be related to #168884 change of OpenMP behavior - tagging @kparzysz here again.

In the following test, we expect the compilation to fail with an error message complaining about the OMP ENDDO.

      SUBROUTINE WORK_SAN(IVAR, JVAR)
      INTEGER IVAR,JVAR
      END SUBROUTINE WORK_SAN

      SUBROUTINE DO_OMP_ISSUE
        INTEGER IVAR, JVAR

        DO 100 IVAR = 1,10
!$OMP     DO
          DO 100 JVAR = 1,10
            CALL WORK_SAN(IVAR,JVAR)
100     CONTINUE
!$OMP   ENDDO
      END SUBROUTINE DO_OMP_ISSUE

However, after that recent change, this no longer fails - it actually compiles. It fails as expected with nvfortran and gfortran.

[scamp]$ nvfortran test.F90 -c -fopenmp
NVFORTRAN-S-0155-ENDDO must immediately follow a DO loop  (test.F90: 13)
  0 inform,   0 warnings,   1 severes, 0 fatal for do_omp_issue
[scamp]$ gfortran test.F90 -c -fopenmp
test.F90:10:28:

   10 |           DO 100 JVAR = 1,10
      |                            1
Warning: Fortran 2018 deleted feature: Shared DO termination label 100 at (1)
test.F90:13:13:

   13 | !$OMP   ENDDO
      |             1
Error: Unexpected !$OMP END DO statement at (1)
[scamp]$ flang test.F90 -c -fopenmp
[scamp]$

Prior to this change, we would get a warning in line with:

./test.F90:13:9: error: The ENDDO directive must follow the DO loop associated with the loop construct
  !$OMP   ENDDO

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions