! Test lowering of nullify-statement ! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s ! ----------------------------------------------------------------------------- ! Test NULLIFY(p) ! ----------------------------------------------------------------------------- ! CHECK-LABEL: func @_QPtest_scalar( ! CHECK-SAME: %[[p:.*]]: !fir.ref>>{{.*}}) subroutine test_scalar(p) real, pointer :: p ! CHECK: %[[null:.*]] = fir.zero_bits !fir.ptr ! CHECK: %[[box:.*]] = fir.embox %[[null]] : (!fir.ptr) -> !fir.box> ! CHECK: fir.store %[[box]] to %[[p]] : !fir.ref>> nullify(p) end subroutine ! CHECK-LABEL: func @_QPtest_scalar_char( ! CHECK-SAME: %[[p:.*]]: !fir.ref>>>{{.*}}) subroutine test_scalar_char(p) character(:), pointer :: p ! 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]] : !fir.ref>>> nullify(p) end subroutine ! CHECK-LABEL: func @_QPtest_array( ! CHECK-SAME: %[[p:.*]]: !fir.ref>>>{{.*}}) subroutine test_array(p) real, pointer :: p(:) ! 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]] : !fir.ref>>> nullify(p) end subroutine ! CHECK-LABEL: func @_QPtest_list( ! CHECK-SAME: %[[p1:.*]]: !fir.ref>>{{.*}}, %[[p2:.*]]: !fir.ref>>>{{.*}}) subroutine test_list(p1, p2) real, pointer :: p1, p2(:) ! CHECK: fir.zero_bits !fir.ptr ! CHECK: fir.store %{{.*}} to %[[p1]] : !fir.ref>> ! CHECK: fir.zero_bits !fir.ptr> ! CHECK: fir.store %{{.*}} to %[[p2]] : !fir.ref>>> nullify(p1, p2) end subroutine