llvm/flang/test/Semantics/label05.f90

! RUN: not %flang_fc1 -fdebug-unparse-with-symbols %s 2>&1 | FileCheck %s
! CHECK: Label '50' was not found
! CHECK: warning: Label '55' is in a construct that should not be used as a branch target here
! CHECK: Label '70' is not a branch target
! CHECK: Control flow use of '70'
! CHECK: error: Label '80' is in a construct that prevents its use as a branch target here
! CHECK: error: Label '90' is in a construct that prevents its use as a branch target here
! CHECK: error: Label '91' is in a construct that prevents its use as a branch target here
! CHECK: error: Label '92' is in a construct that prevents its use as a branch target here
! CHECK: error: Label '30' is in a construct that prevents its use as a branch target here
! CHECK: error: Label '31' is in a construct that prevents its use as a branch target here
! CHECK-NOT: error: Label '32' is in a construct that prevents its use as a branch target here
! CHECK: error: Label '40' is in a construct that prevents its use as a branch target here
! CHECK: error: Label '41' is in a construct that prevents its use as a branch target here
! CHECK-NOT: error: Label '42' is in a construct that prevents its use as a branch target here

subroutine sub00(a,b,n,m)
  real a(n,m)
  real b(n,m)
  if (n .ne. m) then
     goto 50
  end if
6 n = m
end subroutine sub00

subroutine sub01(a,b,n,m)
  real a(n,m)
  real b(n,m)
  if (n .ne. m) then
     goto 55
  else
55   continue
  end if
60 n = m
end subroutine sub01

subroutine sub02(a,b,n,m)
  real a(n,m)
  real b(n,m)
  if (n .ne. m) then
     goto 70
  else
     return
  end if
70 FORMAT (1x,i6)
end subroutine sub02

subroutine sub03(a,n)
  real a(n)
  forall (j=1:n)
80  a(n) = j
  end forall
  go to 80
end subroutine sub03

subroutine sub04(a,n)
  real a(n)
  where (a > 0)
90  a = 1
  elsewhere (a < 0)
91  a = 2
  elsewhere
92  a = 3
  end where
  if (n - 3) 90, 91, 92
end subroutine sub04

subroutine sub05(a)
  real a(..)
  select rank (a)
  rank(1)
31  goto 30
  rank(2)
    goto 32
32  continue
30  continue
  end select
  goto 31
end

subroutine sub06(a)
  class(*) a
  select type (a)
  type is (integer)
41  goto 40
  type is (real)
    goto 42
42  continue
40  continue
  end select
  goto 41
end