[LLVM] Fix Maintainers.md formatting (NFC)
[llvm-project.git] / flang / test / Lower / pass-null-for-class-arg.f90
blobf60cad30b1bf69ffaf6eeb27082b6935856f5c68
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
4 subroutine 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())
14 end 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: }
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: }