! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s ! CHECK-LABEL: func.func @_QPparity_test( ! CHECK-SAME: %[[arg0:.*]]: !fir.box>>{{.*}}) -> !fir.logical<4> logical function parity_test(mask) logical :: mask(:) ! CHECK: %[[MASK:.*]]:2 = hlfir.declare %[[arg0]] ! CHECK: %[[c1:.*]] = arith.constant 1 : index ! CHECK: %[[a1:.*]] = fir.convert %[[MASK]]#1 : (!fir.box>>) -> !fir.box ! CHECK: %[[a2:.*]] = fir.convert %[[c1]] : (index) -> i32 parity_test = parity(mask) ! CHECK: %[[a3:.*]] = fir.call @_FortranAParity(%[[a1]], %{{.*}}, %{{.*}}, %[[a2]]) {{.*}}: (!fir.box, !fir.ref, i32, i32) -> i1 end function parity_test ! CHECK-LABEL: func.func @_QPparity_test2( ! CHECK-SAME: %[[arg0:.*]]: !fir.box>> ! CHECK-SAME: %[[arg1:.*]]: !fir.ref ! CHECK-SAME: %[[arg2:.*]]: !fir.box>> subroutine parity_test2(mask, d, rslt) logical :: mask(:,:) integer :: d logical :: rslt(:) ! CHECK-DAG: %[[a0:.*]] = fir.alloca !fir.box>>> ! CHECK-DAG: %[[MASK:.*]]:2 = hlfir.declare %[[arg0]] ! CHECK-DAG: %[[D:.*]]:2 = hlfir.declare %[[arg1]] ! CHECK-DAG: %[[a1:.*]] = fir.load %[[D]]#0 : !fir.ref ! CHECK-DAG: %[[a6:.*]] = fir.convert %[[a0]] : (!fir.ref>>>>) -> !fir.ref> ! CHECK-DAG: %[[a7:.*]] = fir.convert %[[MASK]]#1 : (!fir.box>>) -> !fir.box rslt = parity(mask, d) ! CHECK: fir.call @_FortranAParityDim(%[[a6]], %[[a7]], %[[a1]], %{{.*}}, %{{.*}}) {{.*}}: (!fir.ref>, !fir.box, i32, !fir.ref, i32) -> () end subroutine parity_test2