47 lines · plain
1! RUN: bbc -emit-hlfir -fcuda %s -o - | FileCheck %s2 3! Check if finalization works with multiple return statements4 5program test6 integer, device :: a(10)7 logical :: l8 9 if (l) then10 return11 end if12 13 return14end15 16! CHECK: func.func @_QQmain() attributes {fir.bindc_name = "TEST"} {17! CHECK: %[[DECL:.*]]:2 = hlfir.declare18! CHECK: cf.cond_br %{{.*}}, ^bb1, ^bb219! CHECK-NEXT: ^bb1:20! CHECK-NEXT: return21! CHECK-NEXT: ^bb2:22! CHECK-NEXT: return23! CHECK-NEXT: }24 25subroutine sub(l)26 integer, device :: a(10)27 logical :: l28 29 if (l) then30 l = .false.31 return32 end if33 34 return35end36 37! CHECK: func.func @_QPsub(%arg0: !fir.ref<!fir.logical<4>> {fir.bindc_name = "l"}) {38! CHECK: %[[DECL:.*]]:2 = hlfir.declare39! CHECK: cf.cond_br %6, ^bb1, ^bb240! CHECK: ^bb1:41! CHECK: cf.br ^bb342! CHECK: ^bb2:43! CHECK: cf.br ^bb344! CHECK: ^bb3:45! CHECK: cuf.free %[[DECL]]#0 : !fir.ref<!fir.array<10xi32>>46! CHECK: }47