! RUN: bbc -emit-fir -polymorphic-type %s -o - | FileCheck %s --check-prefix=FIR ! RUN: bbc -emit-fir -polymorphic-type -hlfir %s -o - | FileCheck %s --check-prefix=HLFIR subroutine test interface subroutine s1p(n) type t integer :: n end type t class(t), pointer :: n end subroutine s1p end interface call s1p(null()) end subroutine test ! FIR-LABEL: func.func @_QPtest() { ! FIR: %[[VAL_0:.*]] = fir.alloca !fir.class>> ! FIR: %[[VAL_1:.*]] = fir.zero_bits !fir.ptr> ! FIR: %[[VAL_2:.*]] = fir.embox %[[VAL_1]] : (!fir.ptr>) -> !fir.class>> ! FIR: fir.store %[[VAL_2]] to %[[VAL_0]] : !fir.ref>>> ! FIR: fir.call @_QPs1p(%[[VAL_0]]) fastmath : (!fir.ref>>>) -> () ! FIR: return ! FIR: } ! HLFIR-LABEL: func.func @_QPtest() { ! HLFIR: %[[VAL_0:.*]] = fir.alloca !fir.class>> ! HLFIR: %[[VAL_1:.*]] = fir.zero_bits !fir.ptr> ! HLFIR: %[[VAL_2:.*]] = fir.embox %[[VAL_1]] : (!fir.ptr>) -> !fir.class>> ! HLFIR: fir.store %[[VAL_2]] to %[[VAL_0]] : !fir.ref>>> ! HLFIR: fir.call @_QPs1p(%[[VAL_0]]) fastmath : (!fir.ref>>>) -> () ! HLFIR: return ! HLFIR: }