@@ -320,6 +320,35 @@ module attributes {fir.defaultkind = "a1c4d8i4l4r4", fir.kindmap = "", llvm.targ
320
320
321
321
// -----
322
322
323
+ // Check that the compiler accepts unknown size arrays.
324
+ module attributes {fir.defaultkind = "a1c4d8i4l4r4", fir.kindmap = "", llvm.target_triple = "native"} {
325
+ func.func @sum_dim() {
326
+ %arr = fir.alloca !fir.box<!fir.heap<!fir.array<?xi32>>>
327
+ %var = fir.alloca !fir.array<8x8xi32>
328
+ %size = arith.constant 8 : index
329
+ %c1 = arith.constant 1 : index
330
+ %c1_i32 = arith.constant 1 : i32
331
+ %lineno = arith.constant 12 : i32
332
+ %shape = fir.shape %size, %size : (index, index) -> !fir.shape<2>
333
+ %slice = fir.slice %c1, %size, %c1, %c1, %size, %c1 : (index, index, index, index, index, index) -> !fir.slice<2>
334
+ %box_array = fir.embox %var(%shape) [%slice] : (!fir.ref<!fir.array<8x8xi32>>, !fir.shape<2>, !fir.slice<2>) -> !fir.box<!fir.array<?x?xi32>>
335
+ %box_none = fir.convert %arr : (!fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>) -> !fir.ref<!fir.box<none>>
336
+ %box_none2 = fir.convert %box_array : (!fir.box<!fir.array<?x?xi32>>) -> !fir.box<none>
337
+ %absent = fir.absent !fir.box<i1>
338
+ %file = fir.address_of(@filename) : !fir.ref<!fir.char<1,16>>
339
+ %file_ref = fir.convert %file : (!fir.ref<!fir.char<1,16>>) -> !fir.ref<i8>
340
+ %absent_none = fir.convert %absent : (!fir.box<i1>) -> !fir.box<none>
341
+ %res = fir.call @_FortranASumDim(%box_none, %box_none2, %c1_i32, %file_ref, %lineno, %absent_none) : (!fir.ref<!fir.box<none>>, !fir.box<none>, i32, !fir.ref<i8>, i32, !fir.box<none>) -> none
342
+ func.return
343
+ }
344
+ }
345
+
346
+ // Just check that SOMETHING is being output.
347
+ // CHECK-LABEL @sum_dim() {
348
+ // CHECK: return
349
+
350
+ // -----
351
+
323
352
func.func @dot_f32(%arg0: !fir.box<!fir.array<?xf32>> {fir.bindc_name = "a"}, %arg1: !fir.box<!fir.array<?xf32>> {fir.bindc_name = "b"}) -> f32 {
324
353
%0 = fir.alloca f32 {bindc_name = "dot", uniq_name = "_QFdotEdot"}
325
354
%1 = fir.address_of(@_QQcl.2E2F646F742E66393000) : !fir.ref<!fir.char<1,10>>
@@ -332,12 +361,6 @@ func.func @dot_f32(%arg0: !fir.box<!fir.array<?xf32>> {fir.bindc_name = "a"}, %a
332
361
%6 = fir.load %0 : !fir.ref<f32>
333
362
return %6 : f32
334
363
}
335
- func.func private @_FortranADotProductReal4(!fir.box<none>, !fir.box<none>, !fir.ref<i8>, i32) -> f32 attributes {fir.runtime}
336
- fir.global linkonce @_QQcl.2E2F646F742E66393000 constant : !fir.char<1,10> {
337
- %0 = fir.string_lit "./dot.f90\00"(10) : !fir.char<1,10>
338
- fir.has_value %0 : !fir.char<1,10>
339
- }
340
-
341
364
// CHECK-LABEL: func.func @dot_f32(
342
365
// CHECK-SAME: %[[A:.*]]: !fir.box<!fir.array<?xf32>> {fir.bindc_name = "a"},
343
366
// CHECK-SAME: %[[B:.*]]: !fir.box<!fir.array<?xf32>> {fir.bindc_name = "b"}) -> f32 {
0 commit comments