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