Peixin-Qiao c207e36025 [flang] Enforce a program not including more than one main program
As Fortran 2018 5.2.2 states, a program shall consist of exactly one
main program. Add this semantic check.

Reviewed By: klausler

Differential Revision: https://reviews.llvm.org/D125186
2022-05-09 10:48:06 +08:00

28 lines
626 B
Fortran

! RUN: %python %S/test_symbols.py %s %flang_fc1
! Statement functions
!DEF: /p1 MainProgram
program p1
!DEF: /p1/f (Function, StmtFunction) Subprogram INTEGER(4)
!DEF: /p1/i ObjectEntity INTEGER(4)
!DEF: /p1/j ObjectEntity INTEGER(4)
integer f, i, j
!REF: /p1/f
!REF: /p1/i
!DEF: /p1/f/i ObjectEntity INTEGER(4)
f(i) = i + 1
!REF: /p1/j
!REF: /p1/f
j = f(2)
end program
!DEF: /p2 (Subroutine)Subprogram
subroutine p2
!DEF: /p2/f (Function, StmtFunction) Subprogram REAL(4)
!DEF: /p2/f/x (Implicit) ObjectEntity REAL(4)
!DEF: /p2/y (Implicit) ObjectEntity REAL(4)
f(x) = y
!REF: /p2/y
y = 1.0
end subroutine