xref: /llvm-project/flang/test/Semantics/dosemantics06.f90 (revision 6c1ac141d3c98af9738bc77fcb55602cbff7751f)
1*6c1ac141SIvan Zhechev! RUN: %python %S/test_errors.py %s %flang_fc1
264ab3302SCarolineConcatto! C1131, C1133 -- check valid and invalid DO loop naming
364ab3302SCarolineConcatto! C1131 (R1119) If the do-stmt of a do-construct specifies a do-construct-name,
464ab3302SCarolineConcatto! the corresponding end-do shall be an end-do-stmt specifying the same
564ab3302SCarolineConcatto! do-construct-name. If the do-stmt of a do-construct does not specify a
664ab3302SCarolineConcatto! do-construct-name, the corresponding end-do shall not specify a
764ab3302SCarolineConcatto! do-construct-name.
864ab3302SCarolineConcatto!
964ab3302SCarolineConcatto! C1133 (R1119) If the do-stmt is a label-do-stmt, the corresponding end-do
1064ab3302SCarolineConcatto! shall be identified with the same label.
1164ab3302SCarolineConcatto
1264ab3302SCarolineConcattosubroutine s1()
1364ab3302SCarolineConcatto  implicit none
1464ab3302SCarolineConcatto  ! Valid construct
1564ab3302SCarolineConcatto  validdo: do while (.true.)
1664ab3302SCarolineConcatto      print *, "hello"
1764ab3302SCarolineConcatto      cycle validdo
1864ab3302SCarolineConcatto      print *, "Weird to get here"
1964ab3302SCarolineConcatto    end do validdo
2064ab3302SCarolineConcatto
2164ab3302SCarolineConcatto  validdo: do while (.true.)
2264ab3302SCarolineConcatto      print *, "Hello"
2364ab3302SCarolineConcatto    end do validdo
2464ab3302SCarolineConcatto
2564ab3302SCarolineConcatto  ! Missing name on initial DO
2664ab3302SCarolineConcatto  do while (.true.)
2764ab3302SCarolineConcatto      print *, "Hello"
2864ab3302SCarolineConcatto!ERROR: DO construct name unexpected
2964ab3302SCarolineConcatto    end do formerlabelmissing
3064ab3302SCarolineConcatto
3164ab3302SCarolineConcatto  dolabel: do while (.true.)
3264ab3302SCarolineConcatto      print *, "Hello"
3364ab3302SCarolineConcatto!ERROR: DO construct name mismatch
3464ab3302SCarolineConcatto    end do differentlabel
3564ab3302SCarolineConcatto
3664ab3302SCarolineConcatto  dowithcycle: do while (.true.)
3764ab3302SCarolineConcatto      print *, "Hello"
3864ab3302SCarolineConcatto!ERROR: CYCLE construct-name is not in scope
3964ab3302SCarolineConcatto      cycle validdo
4064ab3302SCarolineConcatto    end do dowithcycle
4164ab3302SCarolineConcatto
4264ab3302SCarolineConcattoend subroutine s1
43