@@ -126,3 +126,47 @@ module attributes {dlti.dl_spec = #dlti.dl_spec<f80 = dense<128> : vector<2xi64>
126
126
127
127
// CHECK-LABEL: llvm.func @_QQmain()
128
128
// 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