xref: /llvm-project/flang/test/Lower/forall/forall-construct-4.f90 (revision f35f863a88f83332bef9605ef4cfe4f05c066efb)
1! Test forall lowering
2
3! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s
4
5!*** Test forall targeted by label
6subroutine test4_forall_construct()
7      integer :: a(2) = 1
8100   forall (i=1:2)
9        a(i) = a(i) + 1
10      end forall
11      if (a(1) > 3) goto 200
12      goto 100
13200   return
14end subroutine test4_forall_construct
15
16! CHECK-LABEL: func @_QPtest4_forall_construct
17! CHECK:   cf.br ^bb1
18! CHECK: ^bb1:  // 2 preds: ^bb0, ^bb2
19! CHECK:   %{{.*}} = fir.do_loop
20! CHECK:   cf.cond_br %{{.*}}, ^bb2, ^bb3
21! CHECK: ^bb2:  // pred: ^bb1
22! CHECK:   cf.br ^bb1
23! CHECK: ^bb3:  // pred: ^bb1
24! CHECK:   cf.br ^bb4
25! CHECK: ^bb4:  // pred: ^bb3
26! CHECK:   return
27
28subroutine test4_forall_construct2()
29      integer :: a(2) = 1
30100   forall (i=1:2) a(i) = a(i) + 1
31      if (a(1) > 3) goto 200
32      goto 100
33200   return
34end subroutine test4_forall_construct2
35
36! CHECK-LABEL: func @_QPtest4_forall_construct2
37! CHECK:   cf.br ^bb1
38! CHECK: ^bb1:  // 2 preds: ^bb0, ^bb2
39! CHECK:   %{{.*}} = fir.do_loop
40! CHECK:   cf.cond_br %{{.*}}, ^bb2, ^bb3
41! CHECK: ^bb2:  // pred: ^bb1
42! CHECK:   cf.br ^bb1
43! CHECK: ^bb3:  // pred: ^bb1
44! CHECK:   cf.br ^bb4
45! CHECK: ^bb4:  // pred: ^bb3
46! CHECK:   return
47