| ! { dg-do compile } |
| ! PR 38507 |
| ! Verify that we correctly flag invalid gotos, while not flagging valid gotos. |
| integer i,j |
| |
| do i=1,10 |
| goto 20 |
| 20 end do ! { dg-warning "is not in the same block" } |
| |
| goto 20 ! { dg-warning "is not in the same block" } |
| goto 25 ! { dg-warning "is not in the same block" } |
| goto 40 ! { dg-warning "is not in the same block" } |
| goto 50 ! { dg-warning "is not in the same block" } |
| |
| goto 222 |
| goto 333 |
| goto 444 |
| |
| 222 if (i < 0) then |
| 25 end if ! { dg-warning "is not in the same block" } |
| |
| 333 if (i > 0) then |
| do j = 1,20 |
| goto 30 |
| end do |
| else if (i == 0) then |
| goto 30 |
| else |
| goto 30 |
| 30 end if |
| |
| 444 select case(i) |
| case(0) |
| goto 50 |
| goto 60 ! { dg-warning "is not in the same block" } |
| case(1) |
| goto 40 |
| goto 50 |
| 40 continue ! { dg-warning "is not in the same block" } |
| 60 continue ! { dg-warning "is not in the same block" } |
| 50 end select ! { dg-warning "is not in the same block" } |
| continue |
| |
| end |