@@ -41,9 +41,21 @@ func @f5() -> !fir.ref<!fir.ptr<!fir.array<?xi32>>> {
41
41
// CHECK-SAME: i32 %[[l:.*]], i64 %[[e:.*]])
42
42
func @char_array_alloca(%l: i32, %e : index) -> !fir.ref<!fir.array<?x?x!fir.char<1,?>>> {
43
43
// CHECK: %[[lcast:.*]] = sext i32 %[[l]] to i64
44
- // CHECK: %[[m1:.*]] = mul i64 %[[lcast]], %[[e]]
44
+ // CHECK: %[[prod:.*]] = mul i64 %[[lcast]], 1
45
+ // CHECK: %[[m1:.*]] = mul i64 %[[prod]], %[[e]]
45
46
// CHECK: %[[size:.*]] = mul i64 %[[m1]], %[[e]]
46
47
// CHECK: alloca i8, i64 %[[size]]
47
48
%a = fir.alloca !fir.array<?x?x!fir.char<1,?>>(%l : i32), %e, %e
48
49
return %a : !fir.ref<!fir.array<?x?x!fir.char<1,?>>>
49
50
}
51
+
52
+ // Constant factor of 60 (4*3*5) must be included.
53
+ // CHECK-LABEL: define i32* @array_with_holes(
54
+ // CHECK-SAME: i64 %[[a:.*]], i64 %[[b:.*]])
55
+ func @array_with_holes(%0 : index, %1 : index) -> !fir.ref<!fir.array<4x?x3x?x5xi32>> {
56
+ // CHECK: %[[prod1:.*]] = mul i64 60, %[[a]]
57
+ // CHECK: %[[prod2:.*]] = mul i64 %[[prod1]], %[[b]]
58
+ // CHECK: alloca i32, i64 %[[prod2]]
59
+ %a = fir.alloca !fir.array<4x?x3x?x5xi32>, %0, %1
60
+ return %a : !fir.ref<!fir.array<4x?x3x?x5xi32>>
61
+ }
0 commit comments