bolt/deps/llvm-18.1.8/flang/test/Lower/forall/forall-construct-4.f90
2025-02-14 19:21:04 +01:00

46 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