llvm-project/flang/test/Semantics/altreturn06.f90
Peter Steinfeld ae0d1d2e5c [flang] Fix bogus message on internal subprogram with alternate return
Internal subprograms have explicit interfaces.  If an internal subprogram has
an alternate return, we check its explicit interface.  But we were not
putting the label values of alternate returns into the actual argument.

I fixed this by changing the definition of actual arguments to be able
to contain a common::Label and putting the label for an alternate return
into the actual argument.

I also verified that we were already doing all of the semantic checking
required for alternate returns and removed a "TODO" for this.

I also added the test altreturn06.f90.

Differential Revision: https://reviews.llvm.org/D94017
2021-01-08 10:14:21 -08:00

17 lines
472 B
Fortran

! RUN: %S/test_errors.sh %s %t %f18
! Test alternat return argument passing for internal and external subprograms
! Both of the following are OK
call extSubprogram (*100)
call intSubprogram (*100)
call extSubprogram (*101)
call intSubprogram (*101)
100 PRINT *,'First alternate return'
!ERROR: Label '101' is not a branch target
!ERROR: Label '101' is not a branch target
101 FORMAT("abc")
contains
subroutine intSubprogram(*)
return(1)
end subroutine
end