view gcc/testsuite/gfortran.dg/goto_2.f90 @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 84e7813d76e9
children
line wrap: on
line source

! { dg-do run }
! Checks for corrects warnings if branching to then end of a
! construct at various nesting levels
  subroutine check_if(i)
    goto 10  ! { dg-warning "Label at ... is not in the same block" }
    if (i > 0) goto 40
    if (i < 0) then
       goto 40
10  end if    ! { dg-warning "Label at ... is not in the same block" }
    if (i == 0) then
       i = i+1
       goto 20
       goto 40
20  end if
    if (i == 1) then
       i = i+1
       if (i == 2) then
          goto 30
       end if
       goto 40
30  end if
    return
40  i = -1
  end subroutine check_if
  
  subroutine check_select(i)
    goto 10  ! { dg-warning "Label at ... is not in the same block" }
    select case (i)
    case default
       goto 999
10  end select  ! { dg-warning "Label at ... is not in the same block" }
    select case (i)
    case (2)
       i = 1
       goto 20
       goto 999
    case default
       goto 999
20  end select
    j = i
    select case (j)
    case default
       select case (i)
       case (1)
          i = 2
          goto 30
       end select
       goto 999
30  end select
    return    
999 i = -1
  end subroutine check_select

  i = 0
  call check_if (i)
  if (i /= 2) STOP 1
  call check_select (i)
  if (i /= 2) STOP 2
end