blob: 2615f0e79cb28226934a549c9b2ffd0b8d44b7dc [file] [edit]
! Test lowering of non canonical LOGICAL constants.
! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s
subroutine test_transfer_constant(l4, l8)
logical(4) :: l4
logical(8) :: l8
l4 = transfer(3, .true._4)
l8 = transfer(7_8, .true._8)
end subroutine
module constant_logical
logical(4) :: var(3) = [.true., transfer(3, .true._4), .false.]
end module
! CHECK-LABEL: func.func @_QPtest_transfer_constant(
! CHECK: %[[CONSTANT_0:.*]] = arith.constant 3 : i32
! CHECK: %[[BITCAST_0:.*]] = fir.bitcast %[[CONSTANT_0]] : (i32) -> !fir.logical<4>
! CHECK: hlfir.assign %[[BITCAST_0]] to %{{.*}} : !fir.logical<4>, !fir.ref<!fir.logical<4>>
! CHECK: %[[CONSTANT_1:.*]] = arith.constant 7 : i64
! CHECK: %[[BITCAST_1:.*]] = fir.bitcast %[[CONSTANT_1]] : (i64) -> !fir.logical<8>
! CHECK: hlfir.assign %[[BITCAST_1]] to %{{.*}} : !fir.logical<8>, !fir.ref<!fir.logical<8>>
! CHECK: fir.global @_QMconstant_logicalEvar(dense<[1, 3, 0]> : tensor<3xi32>) {alignment = 64 : i64} : !fir.array<3x!fir.logical<4>>