mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-17 03:16:37 +00:00

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
16 lines
477 B
Fortran
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
|