| ! { dg-final { scan-assembler-not "should_be_noreturn" } } |
| ! PR 17758 |
| ! This checks that non-returning subroutines and statements |
| ! really don't return by calling non-existing subroutines |
| ! afterwards. These calls are supposed to be optimized away, so |
| ! they won't show up in the generated assembly. |
| program main |
| character(len=5) :: c |
| c = '12345' |
| read(unit=c,fmt='(A)') i |
| select case(i) |
| case(1) |
| call abort |
| call abort_should_be_noreturn |
| case(2) |
| stop 65 |
| call stop_numeric_should_be_noreturn |
| case(3) |
| stop "foobar" |
| call stop_string_should_be_noreturn |
| case(4) |
| call exit |
| call exit_should_be_noreturn |
| end select |
| end program main |