@@ -220,3 +220,33 @@ func.func @test_array_comp_non_contiguous_slice(%arg0: !fir.ref<!fir.type<t_arra
220
220
// CHECK: %[[VAL_12:.*]] = fir.undefine d index
221
221
// CHECK: %[[VAL_13:.*]] = fir.slice %[[VAL_5]], %[[VAL_6]], %[[VAL_5]], %[[VAL_7]], %[[VAL_3]], %[[VAL_5]] : (index, index, index, index, index, index) -> !fir.slice<2>
222
222
// CHECK: %[[VAL_14:.*]] = fir.embox %[[VAL_11]](%[[VAL_4]]) {{\[}}%[[VAL_13]]] : (!fir.ref<!fir.array<10x20xf32>>, !fir.shape<2>, !fir.slice<2>) -> !fir.box<!fir.array<6x17xf32>>
223
+
224
+ func.func @test_array_comp_slice_contiguous(%arg0: !fir.box<!fir.array<2x!fir.type<_QMtypesTt{i:i32}>>, volatile>) {
225
+ %c2 = arith.constant 2 : index
226
+ %c0_i32 = arith.constant 0 : i32
227
+ %4 = fir.shape %c2 : (index) -> !fir.shape<1>
228
+ %5 = hlfir.designate %arg0{"i"} shape %4 : (!fir.box<!fir.array<2x!fir.type<_QMtypesTt{i:i32}>>, volatile>, !fir.shape<1>) -> !fir.ref<!fir.array<2xi32>, volatile>
229
+ hlfir.assign %c0_i32 to %5 : i32, !fir.ref<!fir.array<2xi32>, volatile>
230
+ return
231
+ }
232
+ // CHECK-LABEL: func.func @test_array_comp_slice_contiguous(
233
+ // CHECK-SAME: %[[ARG0:.*]]: !fir.box<!fir.array<2x!fir.type<_QMtypesTt{i:i32}>>, volatile>) {
234
+ // CHECK: %[[VAL_0:.*]] = fir.alloca !fir.box<!fir.array<2xi32>, volatile>
235
+ // CHECK: %[[VAL_1:.*]] = arith.constant 2 : index
236
+ // CHECK: %[[VAL_2:.*]] = arith.constant 0 : i32
237
+ // CHECK: %[[VAL_3:.*]] = fir.shape %[[VAL_1]] : (index) -> !fir.shape<1>
238
+ // CHECK: %[[VAL_4:.*]] = arith.constant 0 : index
239
+ // CHECK: %[[VAL_5:.*]]:3 = fir.box_dims %[[ARG0]], %[[VAL_4]] : (!fir.box<!fir.array<2x!fir.type<_QMtypesTt{i:i32}>>, volatile>, index) -> (index, index, index)
240
+ // CHECK: %[[VAL_6:.*]] = fir.shift %[[VAL_5]]#0 : (index) -> !fir.shift<1>
241
+ // CHECK: %[[VAL_7:.*]] = fir.field_index i, !fir.type<_QMtypesTt{i:i32}>
242
+ // CHECK: %[[VAL_8:.*]] = arith.constant 1 : index
243
+ // CHECK: %[[VAL_9:.*]] = arith.constant 0 : index
244
+ // CHECK: %[[VAL_10:.*]]:3 = fir.box_dims %[[ARG0]], %[[VAL_9]] : (!fir.box<!fir.array<2x!fir.type<_QMtypesTt{i:i32}>>, volatile>, index) -> (index, index, index)
245
+ // CHECK: %[[VAL_11:.*]] = arith.constant 1 : index
246
+ // CHECK: %[[VAL_12:.*]] = arith.constant 0 : index
247
+ // CHECK: %[[VAL_13:.*]]:3 = fir.box_dims %[[ARG0]], %[[VAL_12]] : (!fir.box<!fir.array<2x!fir.type<_QMtypesTt{i:i32}>>, volatile>, index) -> (index, index, index)
248
+ // CHECK: %[[VAL_14:.*]] = arith.addi %[[VAL_10]]#0, %[[VAL_13]]#1 : index
249
+ // CHECK: %[[VAL_15:.*]] = arith.subi %[[VAL_14]], %[[VAL_11]] : index
250
+ // CHECK: %[[VAL_16:.*]] = fir.slice %[[VAL_10]]#0, %[[VAL_15]], %[[VAL_8]] path %[[VAL_7]] : (index, index, index, !fir.field) -> !fir.slice<1>
251
+ // CHECK: %[[VAL_17:.*]] = fir.rebox %[[ARG0]](%[[VAL_6]]) {{\[}}%[[VAL_16]]] : (!fir.box<!fir.array<2x!fir.type<_QMtypesTt{i:i32}>>, volatile>, !fir.shift<1>, !fir.slice<1>) -> !fir.box<!fir.ref<!fir.array<2xi32>, volatile>, volatile>
252
+ // CHECK: %[[VAL_18:.*]] = fir.box_addr %[[VAL_17]] : (!fir.box<!fir.ref<!fir.array<2xi32>, volatile>, volatile>) -> !fir.ref<!fir.array<2xi32>, volatile>
0 commit comments