! { 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