@@ -126,3 +126,47 @@ module attributes {dlti.dl_spec = #dlti.dl_spec<f80 = dense<128> : vector<2xi64>
126126
127127// CHECK-LABEL: llvm.func @_QQmain()
128128// CHECK-COUNT-4: llvm.call @_FortranACUFAllocDescriptor
129+
130+ // -----
131+
132+ module attributes {
dlti.dl_spec =
#dlti.dl_spec <
!llvm.ptr <
270 > =
dense <
32 > :
vector <
4 x
i64 >,
f128 =
dense <
128 > :
vector <
2 x
i64 >,
f64 =
dense <
64 > :
vector <
2 x
i64 >,
f16 =
dense <
16 > :
vector <
2 x
i64 >,
i32 =
dense <
32 > :
vector <
2 x
i64 >,
i64 =
dense <
64 > :
vector <
2 x
i64 >,
!llvm.ptr <
272 > =
dense <
64 > :
vector <
4 x
i64 >,
!llvm.ptr <
271 > =
dense <
32 > :
vector <
4 x
i64 >,
f80 =
dense <
128 > :
vector <
2 x
i64 >,
i128 =
dense <
128 > :
vector <
2 x
i64 >,
i16 =
dense <
16 > :
vector <
2 x
i64 >,
i8 =
dense <
8 > :
vector <
2 x
i64 >,
!llvm.ptr =
dense <
64 > :
vector <
4 x
i64 >,
i1 =
dense <
8 > :
vector <
2 x
i64 >,
" dlti.endianness" =
" little" ,
" dlti.stack_alignment" =
128 :
i64 >,
fir.defaultkind =
" a1c4d8i4l4r4" ,
fir.kindmap =
" " ,
gpu.container_module ,
llvm.data_layout =
" e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" ,
llvm.ident =
" flang version 20.0.0 ([email protected] :clementval/llvm-project.git efc2415bcce8e8a9e73e77aa122c8aba1c1fbbd2)" ,
llvm.target_triple =
" x86_64-unknown-linux-gnu" } {
133+ func.func @_QQmain () {
134+ %c1_i32 = arith.constant 1 : i32
135+ %c2 = arith.constant 2 : index
136+ %c10 = arith.constant 10 : index
137+ %c1 = arith.constant 1 : index
138+ %c0 = arith.constant 0 : index
139+ %0 = fir.address_of (@_QQclX3C737464696E3E00 ) : !fir.ref <!fir.char <1 ,8 >>
140+ %c11_i32 = arith.constant 11 : i32
141+ %c72 = arith.constant 72 : index
142+ %1 = fir.convert %c72 : (index ) -> i64
143+ %2 = fir.convert %0 : (!fir.ref <!fir.char <1 ,8 >>) -> !fir.ref <i8 >
144+ %3 = fir.call @_FortranACUFAllocDescriptor (%1 , %2 , %c11_i32 ) : (i64 , !fir.ref <i8 >, i32 ) -> !fir.ref <!fir.box <none >>
145+ %4 = fir.convert %3 : (!fir.ref <!fir.box <none >>) -> !fir.ref <!fir.box <!fir.heap <!fir.array <?x ?xi32 >>>>
146+ %5 = fir.zero_bits !fir.heap <!fir.array <?x ?xi32 >>
147+ %6 = fircg.ext_embox %5 (%c0 , %c0 ) {allocator_idx = 2 : i32 } : (!fir.heap <!fir.array <?x ?xi32 >>, index , index ) -> !fir.box <!fir.heap <!fir.array <?x ?xi32 >>>
148+ fir.store %6 to %4 : !fir.ref <!fir.box <!fir.heap <!fir.array <?x ?xi32 >>>>
149+ %7 = fir.load %4 : !fir.ref <!fir.box <!fir.heap <!fir.array <?x ?xi32 >>>>
150+ %8 = fir.box_addr %7 : (!fir.box <!fir.heap <!fir.array <?x ?xi32 >>>) -> !fir.heap <!fir.array <?x ?xi32 >>
151+ %c0_0 = arith.constant 0 : index
152+ %9:3 = fir.box_dims %7 , %c0_0 : (!fir.box <!fir.heap <!fir.array <?x ?xi32 >>>, index ) -> (index , index , index )
153+ %c1_1 = arith.constant 1 : index
154+ %10:3 = fir.box_dims %7 , %c1_1 : (!fir.box <!fir.heap <!fir.array <?x ?xi32 >>>, index ) -> (index , index , index )
155+ %11 = fircg.ext_embox %8 (%9#1 , %10#1 ) origin %9#0 , %10#0 [%c1 , %c10 , %c1 , %c1 , %c2 , %c1 ] : (!fir.heap <!fir.array <?x ?xi32 >>, index , index , index , index , index , index , index , index , index , index ) -> !fir.box <!fir.array <10 x2 xi32 >>
156+ return
157+ }
158+ gpu.module @cuda_device_mod {
159+ gpu.func @_QMassumedPglob (%arg0: !fir.box <!fir.array <?x ?xi32 >>) kernel {
160+ gpu.return
161+ }
162+ }
163+ fir.global linkonce @_QQclX3C737464696E3E00 constant : !fir.char <1 ,8 > {
164+ %0 = fir.string_lit " <stdin>\00" (8 ) : !fir.char <1 ,8 >
165+ fir.has_value %0 : !fir.char <1 ,8 >
166+ }
167+ func.func private @_FortranACUFAllocDescriptor (i64 , !fir.ref <i8 >, i32 ) -> !fir.ref <!fir.box <none >> attributes {fir.runtime }
168+ func.func private @_FortranACUFFreeDescriptor (!fir.ref <!fir.box <none >>, !fir.ref <i8 >, i32 ) -> none attributes {fir.runtime }
169+ }
170+
171+ // CHECK-LABEL: llvm.func @_QQmain()
172+ // CHECK-COUNT-3: llvm.call @_FortranACUFAllocDescriptor
0 commit comments