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
25 lines
701 B
Fortran
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
|