xref: /llvm-project/flang/test/Lower/HLFIR/array-ctor-index.f90 (revision 1710c8cf0f8def4984893e9dd646579de5528d95)
19a7b363eSSlava Zakharin! Check that the implied-do index value is converted to proper type.
281ea6b7eSTom Eccles! RUN: bbc -emit-hlfir -o - %s | FileCheck %s
39a7b363eSSlava Zakharin
49a7b363eSSlava Zakharinfunction test1(k)
59a7b363eSSlava Zakharin  integer*1 :: k
69a7b363eSSlava Zakharin  integer*1 :: test1(4)
79a7b363eSSlava Zakharin  test1 = ([(i*k, integer(8)::i=1,4)])
89a7b363eSSlava Zakharinend function test1
99a7b363eSSlava Zakharin! CHECK-LABEL:   func.func @_QPtest1(
109a7b363eSSlava Zakharin! CHECK-SAME:                        %[[VAL_0:.*]]: !fir.ref<i8> {fir.bindc_name = "k"}) -> !fir.array<4xi8> {
11*1710c8cfSSlava Zakharin! CHECK:           %[[VAL_1:.*]]:2 = hlfir.declare %[[VAL_0]] dummy_scope %{{[0-9]+}} {uniq_name = "_QFtest1Ek"} : (!fir.ref<i8>, !fir.dscope) -> (!fir.ref<i8>, !fir.ref<i8>)
129a7b363eSSlava Zakharin! CHECK:           %[[VAL_2:.*]] = arith.constant 4 : index
139a7b363eSSlava Zakharin! CHECK:           %[[VAL_3:.*]] = fir.alloca !fir.array<4xi8> {bindc_name = "test1", uniq_name = "_QFtest1Etest1"}
149a7b363eSSlava Zakharin! CHECK:           %[[VAL_4:.*]] = fir.shape %[[VAL_2]] : (index) -> !fir.shape<1>
159a7b363eSSlava Zakharin! CHECK:           %[[VAL_5:.*]]:2 = hlfir.declare %[[VAL_3]](%[[VAL_4]]) {uniq_name = "_QFtest1Etest1"} : (!fir.ref<!fir.array<4xi8>>, !fir.shape<1>) -> (!fir.ref<!fir.array<4xi8>>, !fir.ref<!fir.array<4xi8>>)
169a7b363eSSlava Zakharin! CHECK:           %[[VAL_6:.*]] = arith.constant 4 : index
179a7b363eSSlava Zakharin! CHECK:           %[[VAL_7:.*]] = fir.shape %[[VAL_6]] : (index) -> !fir.shape<1>
189a7b363eSSlava Zakharin! CHECK:           %[[VAL_8:.*]] = arith.constant 1 : i64
199a7b363eSSlava Zakharin! CHECK:           %[[VAL_9:.*]] = fir.convert %[[VAL_8]] : (i64) -> index
209a7b363eSSlava Zakharin! CHECK:           %[[VAL_10:.*]] = arith.constant 1 : i64
219a7b363eSSlava Zakharin! CHECK:           %[[VAL_11:.*]] = fir.convert %[[VAL_10]] : (i64) -> index
229a7b363eSSlava Zakharin! CHECK:           %[[VAL_12:.*]] = arith.constant 1 : index
237b4aa95dSSlava Zakharin! CHECK:           %[[VAL_13:.*]] = hlfir.elemental %[[VAL_7]] unordered : (!fir.shape<1>) -> !hlfir.expr<4xi64> {
249a7b363eSSlava Zakharin! CHECK:           ^bb0(%[[VAL_14:.*]]: index):
259a7b363eSSlava Zakharin! CHECK:             %[[VAL_15:.*]] = arith.subi %[[VAL_14]], %[[VAL_12]] : index
269a7b363eSSlava Zakharin! CHECK:             %[[VAL_16:.*]] = arith.muli %[[VAL_15]], %[[VAL_11]] : index
279a7b363eSSlava Zakharin! CHECK:             %[[VAL_17:.*]] = arith.addi %[[VAL_9]], %[[VAL_16]] : index
289a7b363eSSlava Zakharin! CHECK:             %[[VAL_18:.*]] = fir.convert %[[VAL_17]] : (index) -> i64
299a7b363eSSlava Zakharin! CHECK:             %[[VAL_19:.*]] = fir.load %[[VAL_1]]#0 : !fir.ref<i8>
309a7b363eSSlava Zakharin! CHECK:             %[[VAL_20:.*]] = fir.convert %[[VAL_19]] : (i8) -> i64
319a7b363eSSlava Zakharin! CHECK:             %[[VAL_21:.*]] = arith.muli %[[VAL_18]], %[[VAL_20]] : i64
329a7b363eSSlava Zakharin! CHECK:             hlfir.yield_element %[[VAL_21]] : i64
339a7b363eSSlava Zakharin! CHECK:           }
347b4aa95dSSlava Zakharin! CHECK:           %[[VAL_22:.*]] = hlfir.elemental %[[VAL_7]] unordered : (!fir.shape<1>) -> !hlfir.expr<4xi64> {
359a7b363eSSlava Zakharin! CHECK:           ^bb0(%[[VAL_23:.*]]: index):
369a7b363eSSlava Zakharin! CHECK:             %[[VAL_24:.*]] = hlfir.apply %[[VAL_25:.*]], %[[VAL_23]] : (!hlfir.expr<4xi64>, index) -> i64
379a7b363eSSlava Zakharin! CHECK:             %[[VAL_26:.*]] = hlfir.no_reassoc %[[VAL_24]] : i64
389a7b363eSSlava Zakharin! CHECK:             hlfir.yield_element %[[VAL_26]] : i64
399a7b363eSSlava Zakharin! CHECK:           }
407b4aa95dSSlava Zakharin! CHECK:           %[[VAL_27:.*]] = hlfir.elemental %[[VAL_7]] unordered : (!fir.shape<1>) -> !hlfir.expr<4xi8> {
419a7b363eSSlava Zakharin! CHECK:           ^bb0(%[[VAL_28:.*]]: index):
429a7b363eSSlava Zakharin! CHECK:             %[[VAL_29:.*]] = hlfir.apply %[[VAL_30:.*]], %[[VAL_28]] : (!hlfir.expr<4xi64>, index) -> i64
439a7b363eSSlava Zakharin! CHECK:             %[[VAL_31:.*]] = fir.convert %[[VAL_29]] : (i64) -> i8
449a7b363eSSlava Zakharin! CHECK:             hlfir.yield_element %[[VAL_31]] : i8
459a7b363eSSlava Zakharin! CHECK:           }
469a7b363eSSlava Zakharin! CHECK:           hlfir.assign %[[VAL_32:.*]] to %[[VAL_5]]#0 : !hlfir.expr<4xi8>, !fir.ref<!fir.array<4xi8>>
479a7b363eSSlava Zakharin! CHECK:           hlfir.destroy %[[VAL_32]] : !hlfir.expr<4xi8>
489a7b363eSSlava Zakharin! CHECK:           hlfir.destroy %[[VAL_33:.*]] : !hlfir.expr<4xi64>
499a7b363eSSlava Zakharin! CHECK:           hlfir.destroy %[[VAL_34:.*]] : !hlfir.expr<4xi64>
509a7b363eSSlava Zakharin! CHECK:           %[[VAL_35:.*]] = fir.load %[[VAL_5]]#1 : !fir.ref<!fir.array<4xi8>>
519a7b363eSSlava Zakharin! CHECK:           return %[[VAL_35]] : !fir.array<4xi8>
529a7b363eSSlava Zakharin! CHECK:         }
539a7b363eSSlava Zakharin
549a7b363eSSlava Zakharinfunction test2(k)
559a7b363eSSlava Zakharin  integer*2 :: k
569a7b363eSSlava Zakharin  integer*2 :: test2(4)
579a7b363eSSlava Zakharin  test2 = ([(i*k, integer(8)::i=1,4)])
589a7b363eSSlava Zakharinend function test2
599a7b363eSSlava Zakharin! CHECK-LABEL:   func.func @_QPtest2(
609a7b363eSSlava Zakharin! CHECK-SAME:                        %[[VAL_0:.*]]: !fir.ref<i16> {fir.bindc_name = "k"}) -> !fir.array<4xi16> {
61*1710c8cfSSlava Zakharin! CHECK:           %[[VAL_1:.*]]:2 = hlfir.declare %[[VAL_0]] dummy_scope %{{[0-9]+}} {uniq_name = "_QFtest2Ek"} : (!fir.ref<i16>, !fir.dscope) -> (!fir.ref<i16>, !fir.ref<i16>)
629a7b363eSSlava Zakharin! CHECK:           %[[VAL_2:.*]] = arith.constant 4 : index
639a7b363eSSlava Zakharin! CHECK:           %[[VAL_3:.*]] = fir.alloca !fir.array<4xi16> {bindc_name = "test2", uniq_name = "_QFtest2Etest2"}
649a7b363eSSlava Zakharin! CHECK:           %[[VAL_4:.*]] = fir.shape %[[VAL_2]] : (index) -> !fir.shape<1>
659a7b363eSSlava Zakharin! CHECK:           %[[VAL_5:.*]]:2 = hlfir.declare %[[VAL_3]](%[[VAL_4]]) {uniq_name = "_QFtest2Etest2"} : (!fir.ref<!fir.array<4xi16>>, !fir.shape<1>) -> (!fir.ref<!fir.array<4xi16>>, !fir.ref<!fir.array<4xi16>>)
669a7b363eSSlava Zakharin! CHECK:           %[[VAL_6:.*]] = arith.constant 4 : index
679a7b363eSSlava Zakharin! CHECK:           %[[VAL_7:.*]] = fir.shape %[[VAL_6]] : (index) -> !fir.shape<1>
689a7b363eSSlava Zakharin! CHECK:           %[[VAL_8:.*]] = arith.constant 1 : i64
699a7b363eSSlava Zakharin! CHECK:           %[[VAL_9:.*]] = fir.convert %[[VAL_8]] : (i64) -> index
709a7b363eSSlava Zakharin! CHECK:           %[[VAL_10:.*]] = arith.constant 1 : i64
719a7b363eSSlava Zakharin! CHECK:           %[[VAL_11:.*]] = fir.convert %[[VAL_10]] : (i64) -> index
729a7b363eSSlava Zakharin! CHECK:           %[[VAL_12:.*]] = arith.constant 1 : index
737b4aa95dSSlava Zakharin! CHECK:           %[[VAL_13:.*]] = hlfir.elemental %[[VAL_7]] unordered : (!fir.shape<1>) -> !hlfir.expr<4xi64> {
749a7b363eSSlava Zakharin! CHECK:           ^bb0(%[[VAL_14:.*]]: index):
759a7b363eSSlava Zakharin! CHECK:             %[[VAL_15:.*]] = arith.subi %[[VAL_14]], %[[VAL_12]] : index
769a7b363eSSlava Zakharin! CHECK:             %[[VAL_16:.*]] = arith.muli %[[VAL_15]], %[[VAL_11]] : index
779a7b363eSSlava Zakharin! CHECK:             %[[VAL_17:.*]] = arith.addi %[[VAL_9]], %[[VAL_16]] : index
789a7b363eSSlava Zakharin! CHECK:             %[[VAL_18:.*]] = fir.convert %[[VAL_17]] : (index) -> i64
799a7b363eSSlava Zakharin! CHECK:             %[[VAL_19:.*]] = fir.load %[[VAL_1]]#0 : !fir.ref<i16>
809a7b363eSSlava Zakharin! CHECK:             %[[VAL_20:.*]] = fir.convert %[[VAL_19]] : (i16) -> i64
819a7b363eSSlava Zakharin! CHECK:             %[[VAL_21:.*]] = arith.muli %[[VAL_18]], %[[VAL_20]] : i64
829a7b363eSSlava Zakharin! CHECK:             hlfir.yield_element %[[VAL_21]] : i64
839a7b363eSSlava Zakharin! CHECK:           }
847b4aa95dSSlava Zakharin! CHECK:           %[[VAL_22:.*]] = hlfir.elemental %[[VAL_7]] unordered : (!fir.shape<1>) -> !hlfir.expr<4xi64> {
859a7b363eSSlava Zakharin! CHECK:           ^bb0(%[[VAL_23:.*]]: index):
869a7b363eSSlava Zakharin! CHECK:             %[[VAL_24:.*]] = hlfir.apply %[[VAL_25:.*]], %[[VAL_23]] : (!hlfir.expr<4xi64>, index) -> i64
879a7b363eSSlava Zakharin! CHECK:             %[[VAL_26:.*]] = hlfir.no_reassoc %[[VAL_24]] : i64
889a7b363eSSlava Zakharin! CHECK:             hlfir.yield_element %[[VAL_26]] : i64
899a7b363eSSlava Zakharin! CHECK:           }
907b4aa95dSSlava Zakharin! CHECK:           %[[VAL_27:.*]] = hlfir.elemental %[[VAL_7]] unordered : (!fir.shape<1>) -> !hlfir.expr<4xi16> {
919a7b363eSSlava Zakharin! CHECK:           ^bb0(%[[VAL_28:.*]]: index):
929a7b363eSSlava Zakharin! CHECK:             %[[VAL_29:.*]] = hlfir.apply %[[VAL_30:.*]], %[[VAL_28]] : (!hlfir.expr<4xi64>, index) -> i64
939a7b363eSSlava Zakharin! CHECK:             %[[VAL_31:.*]] = fir.convert %[[VAL_29]] : (i64) -> i16
949a7b363eSSlava Zakharin! CHECK:             hlfir.yield_element %[[VAL_31]] : i16
959a7b363eSSlava Zakharin! CHECK:           }
969a7b363eSSlava Zakharin! CHECK:           hlfir.assign %[[VAL_32:.*]] to %[[VAL_5]]#0 : !hlfir.expr<4xi16>, !fir.ref<!fir.array<4xi16>>
979a7b363eSSlava Zakharin! CHECK:           hlfir.destroy %[[VAL_32]] : !hlfir.expr<4xi16>
989a7b363eSSlava Zakharin! CHECK:           hlfir.destroy %[[VAL_33:.*]] : !hlfir.expr<4xi64>
999a7b363eSSlava Zakharin! CHECK:           hlfir.destroy %[[VAL_34:.*]] : !hlfir.expr<4xi64>
1009a7b363eSSlava Zakharin! CHECK:           %[[VAL_35:.*]] = fir.load %[[VAL_5]]#1 : !fir.ref<!fir.array<4xi16>>
1019a7b363eSSlava Zakharin! CHECK:           return %[[VAL_35]] : !fir.array<4xi16>
1029a7b363eSSlava Zakharin! CHECK:         }
1039a7b363eSSlava Zakharin
1049a7b363eSSlava Zakharinfunction test3(k)
1059a7b363eSSlava Zakharin  integer*4 :: k
1069a7b363eSSlava Zakharin  integer*4 :: test3(4)
1079a7b363eSSlava Zakharin  test3 = ([(i*k, integer(8)::i=1,4)])
1089a7b363eSSlava Zakharinend function test3
1099a7b363eSSlava Zakharin! CHECK-LABEL:   func.func @_QPtest3(
1109a7b363eSSlava Zakharin! CHECK-SAME:                        %[[VAL_0:.*]]: !fir.ref<i32> {fir.bindc_name = "k"}) -> !fir.array<4xi32> {
111*1710c8cfSSlava Zakharin! CHECK:           %[[VAL_1:.*]]:2 = hlfir.declare %[[VAL_0]] dummy_scope %{{[0-9]+}} {uniq_name = "_QFtest3Ek"} : (!fir.ref<i32>, !fir.dscope) -> (!fir.ref<i32>, !fir.ref<i32>)
1129a7b363eSSlava Zakharin! CHECK:           %[[VAL_2:.*]] = arith.constant 4 : index
1139a7b363eSSlava Zakharin! CHECK:           %[[VAL_3:.*]] = fir.alloca !fir.array<4xi32> {bindc_name = "test3", uniq_name = "_QFtest3Etest3"}
1149a7b363eSSlava Zakharin! CHECK:           %[[VAL_4:.*]] = fir.shape %[[VAL_2]] : (index) -> !fir.shape<1>
1159a7b363eSSlava Zakharin! CHECK:           %[[VAL_5:.*]]:2 = hlfir.declare %[[VAL_3]](%[[VAL_4]]) {uniq_name = "_QFtest3Etest3"} : (!fir.ref<!fir.array<4xi32>>, !fir.shape<1>) -> (!fir.ref<!fir.array<4xi32>>, !fir.ref<!fir.array<4xi32>>)
1169a7b363eSSlava Zakharin! CHECK:           %[[VAL_6:.*]] = arith.constant 4 : index
1179a7b363eSSlava Zakharin! CHECK:           %[[VAL_7:.*]] = fir.shape %[[VAL_6]] : (index) -> !fir.shape<1>
1189a7b363eSSlava Zakharin! CHECK:           %[[VAL_8:.*]] = arith.constant 1 : i64
1199a7b363eSSlava Zakharin! CHECK:           %[[VAL_9:.*]] = fir.convert %[[VAL_8]] : (i64) -> index
1209a7b363eSSlava Zakharin! CHECK:           %[[VAL_10:.*]] = arith.constant 1 : i64
1219a7b363eSSlava Zakharin! CHECK:           %[[VAL_11:.*]] = fir.convert %[[VAL_10]] : (i64) -> index
1229a7b363eSSlava Zakharin! CHECK:           %[[VAL_12:.*]] = arith.constant 1 : index
1237b4aa95dSSlava Zakharin! CHECK:           %[[VAL_13:.*]] = hlfir.elemental %[[VAL_7]] unordered : (!fir.shape<1>) -> !hlfir.expr<4xi64> {
1249a7b363eSSlava Zakharin! CHECK:           ^bb0(%[[VAL_14:.*]]: index):
1259a7b363eSSlava Zakharin! CHECK:             %[[VAL_15:.*]] = arith.subi %[[VAL_14]], %[[VAL_12]] : index
1269a7b363eSSlava Zakharin! CHECK:             %[[VAL_16:.*]] = arith.muli %[[VAL_15]], %[[VAL_11]] : index
1279a7b363eSSlava Zakharin! CHECK:             %[[VAL_17:.*]] = arith.addi %[[VAL_9]], %[[VAL_16]] : index
1289a7b363eSSlava Zakharin! CHECK:             %[[VAL_18:.*]] = fir.convert %[[VAL_17]] : (index) -> i64
1299a7b363eSSlava Zakharin! CHECK:             %[[VAL_19:.*]] = fir.load %[[VAL_1]]#0 : !fir.ref<i32>
1309a7b363eSSlava Zakharin! CHECK:             %[[VAL_20:.*]] = fir.convert %[[VAL_19]] : (i32) -> i64
1319a7b363eSSlava Zakharin! CHECK:             %[[VAL_21:.*]] = arith.muli %[[VAL_18]], %[[VAL_20]] : i64
1329a7b363eSSlava Zakharin! CHECK:             hlfir.yield_element %[[VAL_21]] : i64
1339a7b363eSSlava Zakharin! CHECK:           }
1347b4aa95dSSlava Zakharin! CHECK:           %[[VAL_22:.*]] = hlfir.elemental %[[VAL_7]] unordered : (!fir.shape<1>) -> !hlfir.expr<4xi64> {
1359a7b363eSSlava Zakharin! CHECK:           ^bb0(%[[VAL_23:.*]]: index):
1369a7b363eSSlava Zakharin! CHECK:             %[[VAL_24:.*]] = hlfir.apply %[[VAL_25:.*]], %[[VAL_23]] : (!hlfir.expr<4xi64>, index) -> i64
1379a7b363eSSlava Zakharin! CHECK:             %[[VAL_26:.*]] = hlfir.no_reassoc %[[VAL_24]] : i64
1389a7b363eSSlava Zakharin! CHECK:             hlfir.yield_element %[[VAL_26]] : i64
1399a7b363eSSlava Zakharin! CHECK:           }
1407b4aa95dSSlava Zakharin! CHECK:           %[[VAL_27:.*]] = hlfir.elemental %[[VAL_7]] unordered : (!fir.shape<1>) -> !hlfir.expr<4xi32> {
1419a7b363eSSlava Zakharin! CHECK:           ^bb0(%[[VAL_28:.*]]: index):
1429a7b363eSSlava Zakharin! CHECK:             %[[VAL_29:.*]] = hlfir.apply %[[VAL_30:.*]], %[[VAL_28]] : (!hlfir.expr<4xi64>, index) -> i64
1439a7b363eSSlava Zakharin! CHECK:             %[[VAL_31:.*]] = fir.convert %[[VAL_29]] : (i64) -> i32
1449a7b363eSSlava Zakharin! CHECK:             hlfir.yield_element %[[VAL_31]] : i32
1459a7b363eSSlava Zakharin! CHECK:           }
1469a7b363eSSlava Zakharin! CHECK:           hlfir.assign %[[VAL_32:.*]] to %[[VAL_5]]#0 : !hlfir.expr<4xi32>, !fir.ref<!fir.array<4xi32>>
1479a7b363eSSlava Zakharin! CHECK:           hlfir.destroy %[[VAL_32]] : !hlfir.expr<4xi32>
1489a7b363eSSlava Zakharin! CHECK:           hlfir.destroy %[[VAL_33:.*]] : !hlfir.expr<4xi64>
1499a7b363eSSlava Zakharin! CHECK:           hlfir.destroy %[[VAL_34:.*]] : !hlfir.expr<4xi64>
1509a7b363eSSlava Zakharin! CHECK:           %[[VAL_35:.*]] = fir.load %[[VAL_5]]#1 : !fir.ref<!fir.array<4xi32>>
1519a7b363eSSlava Zakharin! CHECK:           return %[[VAL_35]] : !fir.array<4xi32>
1529a7b363eSSlava Zakharin! CHECK:         }
1539a7b363eSSlava Zakharin
1549a7b363eSSlava Zakharinfunction test4(k)
1559a7b363eSSlava Zakharin  integer*8 :: k
1569a7b363eSSlava Zakharin  integer*8 :: test4(4)
1579a7b363eSSlava Zakharin  test4 = ([(i*k, integer(8)::i=1,4)])
1589a7b363eSSlava Zakharinend function test4
1599a7b363eSSlava Zakharin! CHECK-LABEL:   func.func @_QPtest4(
1609a7b363eSSlava Zakharin! CHECK-SAME:                        %[[VAL_0:.*]]: !fir.ref<i64> {fir.bindc_name = "k"}) -> !fir.array<4xi64> {
161*1710c8cfSSlava Zakharin! CHECK:           %[[VAL_1:.*]]:2 = hlfir.declare %[[VAL_0]] dummy_scope %{{[0-9]+}} {uniq_name = "_QFtest4Ek"} : (!fir.ref<i64>, !fir.dscope) -> (!fir.ref<i64>, !fir.ref<i64>)
1629a7b363eSSlava Zakharin! CHECK:           %[[VAL_2:.*]] = arith.constant 4 : index
1639a7b363eSSlava Zakharin! CHECK:           %[[VAL_3:.*]] = fir.alloca !fir.array<4xi64> {bindc_name = "test4", uniq_name = "_QFtest4Etest4"}
1649a7b363eSSlava Zakharin! CHECK:           %[[VAL_4:.*]] = fir.shape %[[VAL_2]] : (index) -> !fir.shape<1>
1659a7b363eSSlava Zakharin! CHECK:           %[[VAL_5:.*]]:2 = hlfir.declare %[[VAL_3]](%[[VAL_4]]) {uniq_name = "_QFtest4Etest4"} : (!fir.ref<!fir.array<4xi64>>, !fir.shape<1>) -> (!fir.ref<!fir.array<4xi64>>, !fir.ref<!fir.array<4xi64>>)
1669a7b363eSSlava Zakharin! CHECK:           %[[VAL_6:.*]] = arith.constant 4 : index
1679a7b363eSSlava Zakharin! CHECK:           %[[VAL_7:.*]] = fir.shape %[[VAL_6]] : (index) -> !fir.shape<1>
1689a7b363eSSlava Zakharin! CHECK:           %[[VAL_8:.*]] = arith.constant 1 : i64
1699a7b363eSSlava Zakharin! CHECK:           %[[VAL_9:.*]] = fir.convert %[[VAL_8]] : (i64) -> index
1709a7b363eSSlava Zakharin! CHECK:           %[[VAL_10:.*]] = arith.constant 1 : i64
1719a7b363eSSlava Zakharin! CHECK:           %[[VAL_11:.*]] = fir.convert %[[VAL_10]] : (i64) -> index
1729a7b363eSSlava Zakharin! CHECK:           %[[VAL_12:.*]] = arith.constant 1 : index
1737b4aa95dSSlava Zakharin! CHECK:           %[[VAL_13:.*]] = hlfir.elemental %[[VAL_7]] unordered : (!fir.shape<1>) -> !hlfir.expr<4xi64> {
1749a7b363eSSlava Zakharin! CHECK:           ^bb0(%[[VAL_14:.*]]: index):
1759a7b363eSSlava Zakharin! CHECK:             %[[VAL_15:.*]] = arith.subi %[[VAL_14]], %[[VAL_12]] : index
1769a7b363eSSlava Zakharin! CHECK:             %[[VAL_16:.*]] = arith.muli %[[VAL_15]], %[[VAL_11]] : index
1779a7b363eSSlava Zakharin! CHECK:             %[[VAL_17:.*]] = arith.addi %[[VAL_9]], %[[VAL_16]] : index
1789a7b363eSSlava Zakharin! CHECK:             %[[VAL_18:.*]] = fir.convert %[[VAL_17]] : (index) -> i64
1799a7b363eSSlava Zakharin! CHECK:             %[[VAL_19:.*]] = fir.load %[[VAL_1]]#0 : !fir.ref<i64>
1809a7b363eSSlava Zakharin! CHECK:             %[[VAL_20:.*]] = arith.muli %[[VAL_18]], %[[VAL_19]] : i64
1819a7b363eSSlava Zakharin! CHECK:             hlfir.yield_element %[[VAL_20]] : i64
1829a7b363eSSlava Zakharin! CHECK:           }
1837b4aa95dSSlava Zakharin! CHECK:           %[[VAL_21:.*]] = hlfir.elemental %[[VAL_7]] unordered : (!fir.shape<1>) -> !hlfir.expr<4xi64> {
1849a7b363eSSlava Zakharin! CHECK:           ^bb0(%[[VAL_22:.*]]: index):
1859a7b363eSSlava Zakharin! CHECK:             %[[VAL_23:.*]] = hlfir.apply %[[VAL_24:.*]], %[[VAL_22]] : (!hlfir.expr<4xi64>, index) -> i64
1869a7b363eSSlava Zakharin! CHECK:             %[[VAL_25:.*]] = hlfir.no_reassoc %[[VAL_23]] : i64
1879a7b363eSSlava Zakharin! CHECK:             hlfir.yield_element %[[VAL_25]] : i64
1889a7b363eSSlava Zakharin! CHECK:           }
1899a7b363eSSlava Zakharin! CHECK:           hlfir.assign %[[VAL_26:.*]] to %[[VAL_5]]#0 : !hlfir.expr<4xi64>, !fir.ref<!fir.array<4xi64>>
1909a7b363eSSlava Zakharin! CHECK:           hlfir.destroy %[[VAL_26]] : !hlfir.expr<4xi64>
1919a7b363eSSlava Zakharin! CHECK:           hlfir.destroy %[[VAL_27:.*]] : !hlfir.expr<4xi64>
1929a7b363eSSlava Zakharin! CHECK:           %[[VAL_28:.*]] = fir.load %[[VAL_5]]#1 : !fir.ref<!fir.array<4xi64>>
1939a7b363eSSlava Zakharin! CHECK:           return %[[VAL_28]] : !fir.array<4xi64>
1949a7b363eSSlava Zakharin! CHECK:         }
195