1! RUN: bbc -emit-fir %s -o - | FileCheck %s --check-prefix=FIR 2! RUN: bbc -emit-fir -hlfir %s -o - | FileCheck %s --check-prefix=HLFIR 3 4subroutine test 5 interface 6 subroutine s1p(n) 7 type t 8 integer :: n 9 end type t 10 class(t), pointer :: n 11 end subroutine s1p 12 end interface 13 call s1p(null()) 14end subroutine test 15! FIR-LABEL: func.func @_QPtest() { 16! FIR: %[[VAL_0:.*]] = fir.alloca !fir.class<!fir.ptr<!fir.type<_QFtestFs1pTt{n:i32}>>> 17! FIR: %[[VAL_1:.*]] = fir.zero_bits !fir.ptr<!fir.type<_QFtestFs1pTt{n:i32}>> 18! FIR: %[[VAL_2:.*]] = fir.embox %[[VAL_1]] : (!fir.ptr<!fir.type<_QFtestFs1pTt{n:i32}>>) -> !fir.class<!fir.ptr<!fir.type<_QFtestFs1pTt{n:i32}>>> 19! FIR: fir.store %[[VAL_2]] to %[[VAL_0]] : !fir.ref<!fir.class<!fir.ptr<!fir.type<_QFtestFs1pTt{n:i32}>>>> 20! FIR: fir.call @_QPs1p(%[[VAL_0]]) fastmath<contract> : (!fir.ref<!fir.class<!fir.ptr<!fir.type<_QFtestFs1pTt{n:i32}>>>>) -> () 21! FIR: return 22! FIR: } 23 24! HLFIR-LABEL: func.func @_QPtest() { 25! HLFIR: %[[VAL_0:.*]] = fir.alloca !fir.class<!fir.ptr<!fir.type<_QFtestFs1pTt{n:i32}>>> 26! HLFIR: %[[VAL_1:.*]] = fir.zero_bits !fir.ptr<!fir.type<_QFtestFs1pTt{n:i32}>> 27! HLFIR: %[[VAL_2:.*]] = fir.embox %[[VAL_1]] : (!fir.ptr<!fir.type<_QFtestFs1pTt{n:i32}>>) -> !fir.class<!fir.ptr<!fir.type<_QFtestFs1pTt{n:i32}>>> 28! HLFIR: fir.store %[[VAL_2]] to %[[VAL_0]] : !fir.ref<!fir.class<!fir.ptr<!fir.type<_QFtestFs1pTt{n:i32}>>>> 29! HLFIR: fir.call @_QPs1p(%[[VAL_0]]) fastmath<contract> : (!fir.ref<!fir.class<!fir.ptr<!fir.type<_QFtestFs1pTt{n:i32}>>>>) -> () 30! HLFIR: return 31! HLFIR: } 32