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