This patch adds the lowering for the RETURN statement without alternate returns in the main program or in subroutine and functions. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D119429 Co-authored-by: V Donaldson <vdonaldson@nvidia.com> Co-authored-by: Eric Schweitz <eschweitz@nvidia.com> Co-authored-by: Jean Perier <jperier@nvidia.com>
35 lines
616 B
Fortran
35 lines
616 B
Fortran
! RUN: bbc %s -o "-" -emit-fir | FileCheck %s
|
|
|
|
program basic
|
|
return
|
|
end program
|
|
|
|
! CHECK-LABEL: func @_QQmain() {
|
|
! CHECK: return
|
|
! CHECK: }
|
|
|
|
subroutine sub1()
|
|
return
|
|
end
|
|
|
|
! CHECK-LABEL: func @_QPsub1() {
|
|
! CHECK: cf.br ^bb1
|
|
! CHECK: ^bb1: // pred: ^bb0
|
|
! CHECK: return
|
|
|
|
subroutine sub2()
|
|
goto 3
|
|
2 return
|
|
3 goto 2
|
|
end
|
|
|
|
! CHECK-LABEL: func @_QPsub2() {
|
|
! CHECK: cf.br ^bb2
|
|
! CHECK: ^bb1: // pred: ^bb2
|
|
! CHECK: cf.br ^bb3
|
|
! CHECK: ^bb2: // pred: ^bb0
|
|
! CHECK: cf.br ^bb1
|
|
! CHECK: ^bb3: // pred: ^bb1
|
|
! CHECK: return
|
|
|