! Test lowering of nullify-statement ! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s ! ----------------------------------------------------------------------------- ! Test NULLIFY(p) ! ----------------------------------------------------------------------------- ! CHECK-LABEL: func @_QPtest_scalar( ! CHECK-SAME: %[[arg0:.*]]: !fir.ref>>{{.*}}) subroutine test_scalar(p) real, pointer :: p ! CHECK: %[[p:.*]]:2 = hlfir.declare %[[arg0]] ! CHECK: %[[null:.*]] = fir.zero_bits !fir.ptr ! CHECK: %[[box:.*]] = fir.embox %[[null]] : (!fir.ptr) -> !fir.box> ! CHECK: fir.store %[[box]] to %[[p]]#0 : !fir.ref>> nullify(p) end subroutine ! CHECK-LABEL: func @_QPtest_scalar_char( ! CHECK-SAME: %[[arg0:.*]]: !fir.ref>>>{{.*}}) subroutine test_scalar_char(p) character(:), pointer :: p ! CHECK: %[[p:.*]]:2 = hlfir.declare %[[arg0]] ! CHECK: %[[null:.*]] = fir.zero_bits !fir.ptr> ! CHECK: %[[box:.*]] = fir.embox %[[null]] typeparams %c0{{.*}} : (!fir.ptr>, index) -> !fir.box>> ! CHECK: fir.store %[[box]] to %[[p]]#0 : !fir.ref>>> nullify(p) end subroutine ! CHECK-LABEL: func @_QPtest_array( ! CHECK-SAME: %[[arg0:.*]]: !fir.ref>>>{{.*}}) subroutine test_array(p) real, pointer :: p(:) ! CHECK: %[[p:.*]]:2 = hlfir.declare %[[arg0]] ! CHECK: %[[null:.*]] = fir.zero_bits !fir.ptr> ! CHECK: %[[shape:.*]] = fir.shape %c0{{.*}} ! CHECK: %[[box:.*]] = fir.embox %[[null]](%[[shape]]) : (!fir.ptr>, !fir.shape<1>) -> !fir.box>> ! CHECK: fir.store %[[box]] to %[[p]]#0 : !fir.ref>>> nullify(p) end subroutine ! CHECK-LABEL: func @_QPtest_list( ! CHECK-SAME: %[[arg0:.*]]: !fir.ref>>{{.*}}, %[[arg1:.*]]: !fir.ref>>>{{.*}}) subroutine test_list(p1, p2) real, pointer :: p1, p2(:) ! CHECK: %[[p1:.*]]:2 = hlfir.declare %[[arg0]] ! CHECK: %[[p2:.*]]:2 = hlfir.declare %[[arg1]] ! CHECK: fir.zero_bits !fir.ptr ! CHECK: fir.store %{{.*}} to %[[p1]]#0 : !fir.ref>> ! CHECK: fir.zero_bits !fir.ptr> ! CHECK: fir.store %{{.*}} to %[[p2]]#0 : !fir.ref>>> nullify(p1, p2) end subroutine