47 lines
1.2 KiB
Fortran
47 lines
1.2 KiB
Fortran
|
! Test forall lowering
|
||
|
|
||
|
! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s
|
||
|
|
||
|
!*** Test forall targeted by label
|
||
|
subroutine test4_forall_construct()
|
||
|
integer :: a(2) = 1
|
||
|
100 forall (i=1:2)
|
||
|
a(i) = a(i) + 1
|
||
|
end forall
|
||
|
if (a(1) > 3) goto 200
|
||
|
goto 100
|
||
|
200 return
|
||
|
end subroutine test4_forall_construct
|
||
|
|
||
|
! CHECK-LABEL: func @_QPtest4_forall_construct
|
||
|
! CHECK: cf.br ^bb1
|
||
|
! CHECK: ^bb1: // 2 preds: ^bb0, ^bb2
|
||
|
! CHECK: %{{.*}} = fir.do_loop
|
||
|
! CHECK: cf.cond_br %{{.*}}, ^bb2, ^bb3
|
||
|
! CHECK: ^bb2: // pred: ^bb1
|
||
|
! CHECK: cf.br ^bb1
|
||
|
! CHECK: ^bb3: // pred: ^bb1
|
||
|
! CHECK: cf.br ^bb4
|
||
|
! CHECK: ^bb4: // pred: ^bb3
|
||
|
! CHECK: return
|
||
|
|
||
|
subroutine test4_forall_construct2()
|
||
|
integer :: a(2) = 1
|
||
|
100 forall (i=1:2) a(i) = a(i) + 1
|
||
|
if (a(1) > 3) goto 200
|
||
|
goto 100
|
||
|
200 return
|
||
|
end subroutine test4_forall_construct2
|
||
|
|
||
|
! CHECK-LABEL: func @_QPtest4_forall_construct2
|
||
|
! CHECK: cf.br ^bb1
|
||
|
! CHECK: ^bb1: // 2 preds: ^bb0, ^bb2
|
||
|
! CHECK: %{{.*}} = fir.do_loop
|
||
|
! CHECK: cf.cond_br %{{.*}}, ^bb2, ^bb3
|
||
|
! CHECK: ^bb2: // pred: ^bb1
|
||
|
! CHECK: cf.br ^bb1
|
||
|
! CHECK: ^bb3: // pred: ^bb1
|
||
|
! CHECK: cf.br ^bb4
|
||
|
! CHECK: ^bb4: // pred: ^bb3
|
||
|
! CHECK: return
|