blob: 207b06a54326120a6869505af25d5c463512a817 [file] [log] [blame]
! { dg-do compile }
! Check the fix for PR20839, which concerned non-compliance with one of the
! constraints for block-do-constructs (8.1.4.1.1):
! Constraint: If the do-stmt of a block-do-construct is identified by a
! do-construct-name, the corresponding end-do shall be an end-do-stmt
! specifying the same do-construct-name. (Tests a & b)
! If the do-stmt of a block-do-construct is not identified by a
! do-construct-name, the corresponding end-do shall not specify a
! do-construct-name. (Tests c & d)
! Constraint: If the do-stmt is a nonlabel-do-stmt, the corresponding end-do
! shall be an end-do-stmt.
! Constraint: If the do-stmt is a label-do-stmt, the corresponding end-do shall
! be identified with the same label.
!
! Test a - this was the PR
doi: DO 111 i=1,3 ! { dg-error "requires matching ENDDO name" }
111 continue
! Test b
doii: DO 112 ij=1,3
112 enddo doij ! { dg-error "Expected label" }
! Test c
DO 113 ik=1,3
113 enddo doik ! { dg-error "Syntax error" }
! Test d
DO il=1,3
enddo doil ! { dg-error "Syntax error" }
! Test e
doj: DO 114 j=1,3
enddo doj ! { dg-error "doesn't match DO label" }
! Correct block do constructs
dok: DO 115 k=1,3
dokk: do kk=1,3
dokkk: DO
do kkkk=1,3
do
enddo
enddo
enddo dokkk
enddo dokk
115 enddo dok
! Correct non-block do constructs
do 117 l=1,3
do ll=1,3
do 116 lll=1,3
116 continue
enddo
117 enddo
! These prevent an EOF error, arising from the previous errors.
end do
113 end do
112 end do doii
END