Peter Klausler ee9c917048 [flang] Fix bogus branch target error on END SELECT
The scope model used for branch target checking treats a label
on an END SELECT statement as if it were in the previous CASE block.
This makes it illegal to GO TO that label from within any earlier
CASE block in that statement.  Fix by treating the CASE blocks as
nested scopes within the scope of the SELECT construct.

Also, add a "warning:" tag to related warning messages.

Differential Revision: https://reviews.llvm.org/D127425
2022-06-13 11:42:55 -07:00

16 lines
477 B
Fortran

! RUN: not %flang_fc1 -fdebug-unparse-with-symbols %s 2>&1 | FileCheck %s
! CHECK: Label '30' is not a branch target
! CHECK: Control flow use of '30'
! CHECK: warning: Label '10' is in a construct that should not be used as a branch target here
! CHECK: Label '20' was not found
! CHECK: Label '60' was not found
subroutine sub00(n,m)
30 format (i6,f6.2)
if (n .eq. m) then
10 print *,"equal"
end if
call sub01(n,*10,*20,*30)
write (*,60) n, m
end subroutine sub00