peter klausler 9eab0da183 [flang] Catch branching into FORALL/WHERE constructs
Enforce constraints C1034 & C1038, which disallow the use
of otherwise valid statements as branch targets when they
appear in FORALL &/or WHERE constructs.  (And make the
diagnostic message somewhat more user-friendly.)

Differential Revision: https://reviews.llvm.org/D109936
2021-09-27 10:51:44 -07:00

25 lines
701 B
Fortran

! RUN: not %flang_fc1 -fdebug-unparse-with-symbols %s 2>&1 | FileCheck %s
! CHECK: Label '10' is in a construct that prevents its use as a branch target here
! CHECK: Label '20' was not found
! CHECK: Label '30' is not a branch target
! CHECK: Control flow use of '30'
! CHECK: Label '40' is in a construct that prevents its use as a branch target here
! CHECK: Label '50' is in a construct that prevents its use as a branch target here
subroutine sub00(n)
GOTO (10,20,30) n
if (n .eq. 1) then
10 print *, "xyz"
end if
30 FORMAT (1x,i6)
end subroutine sub00
subroutine sub01(n)
real n
GOTO (40,50,60) n
if (n .eq. 1) then
40 print *, "xyz"
50 end if
60 continue
end subroutine sub01