19f356579SSlava Zakharin! RUN: bbc -o - --outline-intrinsics %s | FileCheck %s 2656b8d6cSValentin Clement 3656b8d6cSValentin Clement! CHECK-LABEL: func @_QQmain() { 4656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_0:.*]] = arith.constant 10 : index 5656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_4:.*]] = arith.constant 2 : index 6656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_5:.*]] = arith.constant 1 : index 7656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_6:.*]] = arith.constant 0 : index 8656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_8:.*]] = arith.constant 8 : i64 9656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_11:.*]] = arith.constant 3 : index 10656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_13:.*]] = arith.constant 2 : i64 11656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_14:.*]] = arith.constant 7 : i64 12656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_16:.*]] = arith.constant 4 : i64 13656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_18:.*]] = arith.constant -1 : i32 14656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_19:.*]] = arith.constant 0 : i64 15656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_20:.*]] = arith.constant 1 : i64 16656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_21:.*]] = arith.constant 3 : i64 17656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_22:.*]] = arith.constant 4 : index 18656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_23:.*]] = arith.constant 1 : i32 19656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_24:.*]] = arith.constant 0 : i32 20656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_25:.*]] = fir.address_of(@_QFEa1) : !fir.ref<!fir.array<10x10xf32>> 21656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_26:.*]] = fir.address_of(@_QFEa2) : !fir.ref<!fir.array<3xf32>> 22656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_27:.*]] = fir.address_of(@_QFEa3) : !fir.ref<!fir.array<10xf32>> 23656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_28:.*]] = fir.alloca i32 {bindc_name = "i", uniq_name = "_QFEi"} 24656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_29:.*]] = fir.address_of(@_QFEiv) : !fir.ref<!fir.array<3xi32>> 25656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_30:.*]] = fir.alloca i32 {bindc_name = "j", uniq_name = "_QFEj"} 26656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_31:.*]] = fir.alloca i32 {bindc_name = "k", uniq_name = "_QFEk"} 27656b8d6cSValentin Clement! CHECK: fir.store %[[VAL_24]] to %[[VAL_31]] : !fir.ref<i32> 28656b8d6cSValentin Clement! CHECK: br ^bb1(%[[VAL_5]], %[[VAL_0]] : index, index) 29656b8d6cSValentin Clement! CHECK: ^bb1(%[[VAL_32:.*]]: index, %[[VAL_33:.*]]: index): 30656b8d6cSValentin Clement! CHECK: %[[VAL_34:.*]] = arith.cmpi sgt, %[[VAL_33]], %[[VAL_6]] : index 31656b8d6cSValentin Clement! CHECK: cond_br %[[VAL_34]], ^bb2, ^bb6 32656b8d6cSValentin Clement! CHECK: ^bb2: 33656b8d6cSValentin Clement! CHECK: %[[VAL_35:.*]] = fir.convert %[[VAL_32]] : (index) -> i32 34656b8d6cSValentin Clement! CHECK: fir.store %[[VAL_35]] to %[[VAL_30]] : !fir.ref<i32> 35656b8d6cSValentin Clement! CHECK: br ^bb3(%[[VAL_5]], %[[VAL_0]] : index, index) 36656b8d6cSValentin Clement! CHECK: ^bb3(%[[VAL_36:.*]]: index, %[[VAL_37:.*]]: index): 37656b8d6cSValentin Clement! CHECK: %[[VAL_38:.*]] = arith.cmpi sgt, %[[VAL_37]], %[[VAL_6]] : index 38656b8d6cSValentin Clement! CHECK: cond_br %[[VAL_38]], ^bb4, ^bb5 39656b8d6cSValentin Clement! CHECK: ^bb4: 40656b8d6cSValentin Clement! CHECK: %[[VAL_39:.*]] = fir.convert %[[VAL_36]] : (index) -> i32 41656b8d6cSValentin Clement! CHECK: fir.store %[[VAL_39]] to %[[VAL_28]] : !fir.ref<i32> 42656b8d6cSValentin Clement! CHECK: %[[VAL_40:.*]] = fir.load %[[VAL_31]] : !fir.ref<i32> 43656b8d6cSValentin Clement! CHECK: %[[VAL_41:.*]] = arith.addi %[[VAL_40]], %[[VAL_23]] : i32 44656b8d6cSValentin Clement! CHECK: fir.store %[[VAL_41]] to %[[VAL_31]] : !fir.ref<i32> 45656b8d6cSValentin Clement! CHECK: %[[VAL_42:.*]] = fir.load %[[VAL_31]] : !fir.ref<i32> 46656b8d6cSValentin Clement! CHECK: %[[VAL_43:.*]] = fir.convert %[[VAL_42]] : (i32) -> f32 47656b8d6cSValentin Clement! CHECK: %[[VAL_44:.*]] = fir.call @fir.cos.f32.f32(%[[VAL_43]]) : (f32) -> f32 48656b8d6cSValentin Clement! CHECK: %[[VAL_45:.*]] = fir.load %[[VAL_28]] : !fir.ref<i32> 49656b8d6cSValentin Clement! CHECK: %[[VAL_46:.*]] = fir.convert %[[VAL_45]] : (i32) -> i64 50656b8d6cSValentin Clement! CHECK: %[[VAL_47:.*]] = arith.subi %[[VAL_46]], %[[VAL_20]] : i64 51656b8d6cSValentin Clement! CHECK: %[[VAL_48:.*]] = fir.load %[[VAL_30]] : !fir.ref<i32> 52656b8d6cSValentin Clement! CHECK: %[[VAL_49:.*]] = fir.convert %[[VAL_48]] : (i32) -> i64 53656b8d6cSValentin Clement! CHECK: %[[VAL_50:.*]] = arith.subi %[[VAL_49]], %[[VAL_20]] : i64 54656b8d6cSValentin Clement! CHECK: %[[VAL_51:.*]] = fir.coordinate_of %[[VAL_25]], %[[VAL_47]], %[[VAL_50]] : (!fir.ref<!fir.array<10x10xf32>>, i64, i64) -> !fir.ref<f32> 55656b8d6cSValentin Clement! CHECK: fir.store %[[VAL_44]] to %[[VAL_51]] : !fir.ref<f32> 56656b8d6cSValentin Clement! CHECK: %[[VAL_52:.*]] = arith.addi %[[VAL_36]], %[[VAL_5]] : index 57656b8d6cSValentin Clement! CHECK: %[[VAL_53:.*]] = arith.subi %[[VAL_37]], %[[VAL_5]] : index 58656b8d6cSValentin Clement! CHECK: br ^bb3(%[[VAL_52]], %[[VAL_53]] : index, index) 59656b8d6cSValentin Clement! CHECK: ^bb5: 60656b8d6cSValentin Clement! CHECK: %[[VAL_54:.*]] = fir.convert %[[VAL_36]] : (index) -> i32 61656b8d6cSValentin Clement! CHECK: fir.store %[[VAL_54]] to %[[VAL_28]] : !fir.ref<i32> 62656b8d6cSValentin Clement! CHECK: %[[VAL_55:.*]] = fir.load %[[VAL_31]] : !fir.ref<i32> 63656b8d6cSValentin Clement! CHECK: %[[VAL_56:.*]] = fir.convert %[[VAL_55]] : (i32) -> f32 64656b8d6cSValentin Clement! CHECK: %[[VAL_57:.*]] = fir.call @fir.sin.f32.f32(%[[VAL_56]]) : (f32) -> f32 65656b8d6cSValentin Clement! CHECK: %[[VAL_58:.*]] = fir.load %[[VAL_30]] : !fir.ref<i32> 66656b8d6cSValentin Clement! CHECK: %[[VAL_59:.*]] = fir.convert %[[VAL_58]] : (i32) -> i64 67656b8d6cSValentin Clement! CHECK: %[[VAL_60:.*]] = arith.subi %[[VAL_59]], %[[VAL_20]] : i64 68656b8d6cSValentin Clement! CHECK: %[[VAL_61:.*]] = fir.coordinate_of %[[VAL_27]], %[[VAL_60]] : (!fir.ref<!fir.array<10xf32>>, i64) -> !fir.ref<f32> 69656b8d6cSValentin Clement! CHECK: fir.store %[[VAL_57]] to %[[VAL_61]] : !fir.ref<f32> 70656b8d6cSValentin Clement! CHECK: %[[VAL_62:.*]] = arith.addi %[[VAL_32]], %[[VAL_5]] : index 71656b8d6cSValentin Clement! CHECK: %[[VAL_63:.*]] = arith.subi %[[VAL_33]], %[[VAL_5]] : index 72656b8d6cSValentin Clement! CHECK: br ^bb1(%[[VAL_62]], %[[VAL_63]] : index, index) 73656b8d6cSValentin Clement! CHECK: ^bb6: 74656b8d6cSValentin Clement! CHECK: %[[VAL_64:.*]] = fir.convert %[[VAL_32]] : (index) -> i32 75656b8d6cSValentin Clement! CHECK: fir.store %[[VAL_64]] to %[[VAL_30]] : !fir.ref<i32> 76656b8d6cSValentin Clement! CHECK: %[[VAL_65:.*]] = fir.shape %[[VAL_11]] : (index) -> !fir.shape<1> 77656b8d6cSValentin Clement! CHECK: %[[VAL_66:.*]] = fir.undefined index 78656b8d6cSValentin Clement! CHECK: %[[VAL_67:.*]] = fir.shape %[[VAL_0]], %[[VAL_0]] : (index, index) -> !fir.shape<2> 79656b8d6cSValentin Clement! CHECK: %[[VAL_68:.*]] = fir.slice %[[VAL_16]], %[[VAL_66]], %[[VAL_66]], %[[VAL_4]], %[[VAL_0]], %[[VAL_11]] : (i64, index, index, index, index, index) -> !fir.slice<2> 80656b8d6cSValentin Clement! CHECK: br ^bb7(%[[VAL_6]], %[[VAL_11]] : index, index) 81656b8d6cSValentin Clement! CHECK: ^bb7(%[[VAL_69:.*]]: index, %[[VAL_70:.*]]: index): 82656b8d6cSValentin Clement! CHECK: %[[VAL_71:.*]] = arith.cmpi sgt, %[[VAL_70]], %[[VAL_6]] : index 83656b8d6cSValentin Clement! CHECK: cond_br %[[VAL_71]], ^bb8, ^bb9 84656b8d6cSValentin Clement! CHECK: ^bb8: 85656b8d6cSValentin Clement! CHECK: %[[VAL_72:.*]] = arith.addi %[[VAL_69]], %[[VAL_5]] : index 86656b8d6cSValentin Clement! CHECK: %[[VAL_73:.*]] = fir.array_coor %[[VAL_25]](%[[VAL_67]]) {{\[}}%[[VAL_68]]] %[[VAL_22]], %[[VAL_72]] : (!fir.ref<!fir.array<10x10xf32>>, !fir.shape<2>, !fir.slice<2>, index, index) -> !fir.ref<f32> 87656b8d6cSValentin Clement! CHECK: %[[VAL_74:.*]] = fir.load %[[VAL_73]] : !fir.ref<f32> 88656b8d6cSValentin Clement! CHECK: %[[VAL_75:.*]] = fir.array_coor %[[VAL_26]](%[[VAL_65]]) %[[VAL_72]] : (!fir.ref<!fir.array<3xf32>>, !fir.shape<1>, index) -> !fir.ref<f32> 89656b8d6cSValentin Clement! CHECK: fir.store %[[VAL_74]] to %[[VAL_75]] : !fir.ref<f32> 90656b8d6cSValentin Clement! CHECK: %[[VAL_76:.*]] = arith.subi %[[VAL_70]], %[[VAL_5]] : index 91656b8d6cSValentin Clement! CHECK: br ^bb7(%[[VAL_72]], %[[VAL_76]] : index, index) 92656b8d6cSValentin Clement! CHECK: ^bb9: 93656b8d6cSValentin Clement! CHECK: %[[VAL_77:.*]] = fir.coordinate_of %[[VAL_25]], %[[VAL_21]], %[[VAL_20]] : (!fir.ref<!fir.array<10x10xf32>>, i64, i64) -> !fir.ref<f32> 94656b8d6cSValentin Clement! CHECK: %[[VAL_78:.*]] = fir.load %[[VAL_77]] : !fir.ref<f32> 95656b8d6cSValentin Clement! CHECK: %[[VAL_79:.*]] = fir.coordinate_of %[[VAL_26]], %[[VAL_19]] : (!fir.ref<!fir.array<3xf32>>, i64) -> !fir.ref<f32> 96656b8d6cSValentin Clement! CHECK: %[[VAL_80:.*]] = fir.load %[[VAL_79]] : !fir.ref<f32> 97656b8d6cSValentin Clement! CHECK: %[[VAL_81:.*]] = arith.cmpf une, %[[VAL_78]], %[[VAL_80]] : f32 98656b8d6cSValentin Clement! CHECK: cond_br %[[VAL_81]], ^bb10, ^bb11 99656b8d6cSValentin Clement! CHECK: ^bb10: 100656b8d6cSValentin Clement! CHECK: %[[VAL_82:.*]] = fir.address_of(@_QQcl.{{.*}}) : !fir.ref<!fir.char<1, 101656b8d6cSValentin Clement! CHECK: %[[VAL_83:.*]] = fir.convert %[[VAL_82]] : (!fir.ref<!fir.char<1,{{.*}}>>) -> !fir.ref<i8> 102656b8d6cSValentin Clement! CHECK: %[[VAL_84:.*]] = fir.call @_FortranAioBeginExternalListOutput(%[[VAL_18]], %[[VAL_83]], %{{.*}}) : (i32, !fir.ref<i8>, i32) -> !fir.ref<i8> 103656b8d6cSValentin Clement! CHECK: %[[VAL_85:.*]] = fir.address_of(@_QQcl.6D69736D617463682031) : !fir.ref<!fir.char<1,10>> 104656b8d6cSValentin Clement! CHECK: %[[VAL_86:.*]] = fir.convert %[[VAL_85]] : (!fir.ref<!fir.char<1,10>>) -> !fir.ref<i8> 105656b8d6cSValentin Clement! CHECK: %[[VAL_87:.*]] = fir.convert %[[VAL_0]] : (index) -> i64 106656b8d6cSValentin Clement! CHECK: %[[VAL_88:.*]] = fir.call @_FortranAioOutputAscii(%[[VAL_84]], %[[VAL_86]], %[[VAL_87]]) : (!fir.ref<i8>, !fir.ref<i8>, i64) -> i1 107656b8d6cSValentin Clement! CHECK: %[[VAL_89:.*]] = fir.load %[[VAL_79]] : !fir.ref<f32> 108656b8d6cSValentin Clement! CHECK: %[[VAL_90:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_84]], %[[VAL_89]]) : (!fir.ref<i8>, f32) -> i1 109656b8d6cSValentin Clement! CHECK: %[[VAL_91:.*]] = fir.load %[[VAL_77]] : !fir.ref<f32> 110656b8d6cSValentin Clement! CHECK: %[[VAL_92:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_84]], %[[VAL_91]]) : (!fir.ref<i8>, f32) -> i1 111656b8d6cSValentin Clement! CHECK: %[[VAL_93:.*]] = fir.call @_FortranAioEndIoStatement(%[[VAL_84]]) : (!fir.ref<i8>) -> i32 112656b8d6cSValentin Clement! CHECK: br ^bb11 113656b8d6cSValentin Clement! CHECK: ^bb11: 114656b8d6cSValentin Clement! CHECK: %[[VAL_94:.*]] = fir.coordinate_of %[[VAL_25]], %[[VAL_21]], %[[VAL_16]] : (!fir.ref<!fir.array<10x10xf32>>, i64, i64) -> !fir.ref<f32> 115656b8d6cSValentin Clement! CHECK: %[[VAL_95:.*]] = fir.load %[[VAL_94]] : !fir.ref<f32> 116656b8d6cSValentin Clement! CHECK: %[[VAL_96:.*]] = fir.coordinate_of %[[VAL_26]], %[[VAL_20]] : (!fir.ref<!fir.array<3xf32>>, i64) -> !fir.ref<f32> 117656b8d6cSValentin Clement! CHECK: %[[VAL_97:.*]] = fir.load %[[VAL_96]] : !fir.ref<f32> 118656b8d6cSValentin Clement! CHECK: %[[VAL_98:.*]] = arith.cmpf une, %[[VAL_95]], %[[VAL_97]] : f32 119656b8d6cSValentin Clement! CHECK: cond_br %[[VAL_98]], ^bb12, ^bb13 120656b8d6cSValentin Clement! CHECK: ^bb12: 121656b8d6cSValentin Clement! CHECK: %[[VAL_99:.*]] = fir.address_of(@_QQcl.{{.*}}) : !fir.ref<!fir.char<1, 122656b8d6cSValentin Clement! CHECK: %[[VAL_100:.*]] = fir.convert %[[VAL_99]] : (!fir.ref<!fir.char<1,{{.*}}>>) -> !fir.ref<i8> 123656b8d6cSValentin Clement! CHECK: %[[VAL_101:.*]] = fir.call @_FortranAioBeginExternalListOutput(%[[VAL_18]], %[[VAL_100]], %{{.*}}) : (i32, !fir.ref<i8>, i32) -> !fir.ref<i8> 124656b8d6cSValentin Clement! CHECK: %[[VAL_102:.*]] = fir.address_of(@_QQcl.6D69736D617463682032) : !fir.ref<!fir.char<1,10>> 125656b8d6cSValentin Clement! CHECK: %[[VAL_103:.*]] = fir.convert %[[VAL_102]] : (!fir.ref<!fir.char<1,10>>) -> !fir.ref<i8> 126656b8d6cSValentin Clement! CHECK: %[[VAL_104:.*]] = fir.convert %[[VAL_0]] : (index) -> i64 127656b8d6cSValentin Clement! CHECK: %[[VAL_105:.*]] = fir.call @_FortranAioOutputAscii(%[[VAL_101]], %[[VAL_103]], %[[VAL_104]]) : (!fir.ref<i8>, !fir.ref<i8>, i64) -> i1 128656b8d6cSValentin Clement! CHECK: %[[VAL_106:.*]] = fir.load %[[VAL_96]] : !fir.ref<f32> 129656b8d6cSValentin Clement! CHECK: %[[VAL_107:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_101]], %[[VAL_106]]) : (!fir.ref<i8>, f32) -> i1 130656b8d6cSValentin Clement! CHECK: %[[VAL_108:.*]] = fir.load %[[VAL_94]] : !fir.ref<f32> 131656b8d6cSValentin Clement! CHECK: %[[VAL_109:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_101]], %[[VAL_108]]) : (!fir.ref<i8>, f32) -> i1 132656b8d6cSValentin Clement! CHECK: %[[VAL_110:.*]] = fir.call @_FortranAioEndIoStatement(%[[VAL_101]]) : (!fir.ref<i8>) -> i32 133656b8d6cSValentin Clement! CHECK: br ^bb13 134656b8d6cSValentin Clement! CHECK: ^bb13: 135656b8d6cSValentin Clement! CHECK: %[[VAL_111:.*]] = fir.coordinate_of %[[VAL_25]], %[[VAL_21]], %[[VAL_14]] : (!fir.ref<!fir.array<10x10xf32>>, i64, i64) -> !fir.ref<f32> 136656b8d6cSValentin Clement! CHECK: %[[VAL_112:.*]] = fir.load %[[VAL_111]] : !fir.ref<f32> 137656b8d6cSValentin Clement! CHECK: %[[VAL_113:.*]] = fir.coordinate_of %[[VAL_26]], %[[VAL_13]] : (!fir.ref<!fir.array<3xf32>>, i64) -> !fir.ref<f32> 138656b8d6cSValentin Clement! CHECK: %[[VAL_114:.*]] = fir.load %[[VAL_113]] : !fir.ref<f32> 139656b8d6cSValentin Clement! CHECK: %[[VAL_115:.*]] = arith.cmpf une, %[[VAL_112]], %[[VAL_114]] : f32 140656b8d6cSValentin Clement! CHECK: cond_br %[[VAL_115]], ^bb14, ^bb15 141656b8d6cSValentin Clement! CHECK: ^bb14: 142656b8d6cSValentin Clement! CHECK: %[[VAL_116:.*]] = fir.address_of(@_QQcl.{{.*}} : !fir.ref<!fir.char<1, 143656b8d6cSValentin Clement! CHECK: %[[VAL_117:.*]] = fir.convert %[[VAL_116]] : (!fir.ref<!fir.char<1,{{.*}}>>) -> !fir.ref<i8> 144656b8d6cSValentin Clement! CHECK: %[[VAL_118:.*]] = fir.call @_FortranAioBeginExternalListOutput(%[[VAL_18]], %[[VAL_117]], %{{.*}}) : (i32, !fir.ref<i8>, i32) -> !fir.ref<i8> 145656b8d6cSValentin Clement! CHECK: %[[VAL_119:.*]] = fir.address_of(@_QQcl.6D69736D617463682033) : !fir.ref<!fir.char<1,10>> 146656b8d6cSValentin Clement! CHECK: %[[VAL_120:.*]] = fir.convert %[[VAL_119]] : (!fir.ref<!fir.char<1,10>>) -> !fir.ref<i8> 147656b8d6cSValentin Clement! CHECK: %[[VAL_121:.*]] = fir.convert %[[VAL_0]] : (index) -> i64 148656b8d6cSValentin Clement! CHECK: %[[VAL_122:.*]] = fir.call @_FortranAioOutputAscii(%[[VAL_118]], %[[VAL_120]], %[[VAL_121]]) : (!fir.ref<i8>, !fir.ref<i8>, i64) -> i1 149656b8d6cSValentin Clement! CHECK: %[[VAL_123:.*]] = fir.load %[[VAL_113]] : !fir.ref<f32> 150656b8d6cSValentin Clement! CHECK: %[[VAL_124:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_118]], %[[VAL_123]]) : (!fir.ref<i8>, f32) -> i1 151656b8d6cSValentin Clement! CHECK: %[[VAL_125:.*]] = fir.load %[[VAL_111]] : !fir.ref<f32> 152656b8d6cSValentin Clement! CHECK: %[[VAL_126:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_118]], %[[VAL_125]]) : (!fir.ref<i8>, f32) -> i1 153656b8d6cSValentin Clement! CHECK: %[[VAL_127:.*]] = fir.call @_FortranAioEndIoStatement(%[[VAL_118]]) : (!fir.ref<i8>) -> i32 154656b8d6cSValentin Clement! CHECK: br ^bb15 155656b8d6cSValentin Clement! CHECK: ^bb15: 156656b8d6cSValentin Clement! CHECK: %[[VAL_128:.*]] = fir.shape %[[VAL_0]] : (index) -> !fir.shape<1> 157656b8d6cSValentin Clement! CHECK: %[[VAL_129:.*]] = fir.slice %[[VAL_5]], %[[VAL_0]], %[[VAL_22]] : (index, index, index) -> !fir.slice<1> 158656b8d6cSValentin Clement! CHECK: br ^bb16(%[[VAL_6]], %[[VAL_11]] : index, index) 159656b8d6cSValentin Clement! CHECK: ^bb16(%[[VAL_130:.*]]: index, %[[VAL_131:.*]]: index): 160656b8d6cSValentin Clement! CHECK: %[[VAL_132:.*]] = arith.cmpi sgt, %[[VAL_131]], %[[VAL_6]] : index 161656b8d6cSValentin Clement! CHECK: cond_br %[[VAL_132]], ^bb17, ^bb18 162656b8d6cSValentin Clement! CHECK: ^bb17: 163656b8d6cSValentin Clement! CHECK: %[[VAL_133:.*]] = arith.addi %[[VAL_130]], %[[VAL_5]] : index 164656b8d6cSValentin Clement! CHECK: %[[VAL_134:.*]] = fir.array_coor %[[VAL_26]](%[[VAL_65]]) %[[VAL_133]] : (!fir.ref<!fir.array<3xf32>>, !fir.shape<1>, index) -> !fir.ref<f32> 165656b8d6cSValentin Clement! CHECK: %[[VAL_135:.*]] = fir.load %[[VAL_134]] : !fir.ref<f32> 166656b8d6cSValentin Clement! CHECK: %[[VAL_136:.*]] = fir.array_coor %[[VAL_27]](%[[VAL_128]]) {{\[}}%[[VAL_129]]] %[[VAL_133]] : (!fir.ref<!fir.array<10xf32>>, !fir.shape<1>, !fir.slice<1>, index) -> !fir.ref<f32> 167656b8d6cSValentin Clement! CHECK: fir.store %[[VAL_135]] to %[[VAL_136]] : !fir.ref<f32> 168656b8d6cSValentin Clement! CHECK: %[[VAL_137:.*]] = arith.subi %[[VAL_131]], %[[VAL_5]] : index 169656b8d6cSValentin Clement! CHECK: br ^bb16(%[[VAL_133]], %[[VAL_137]] : index, index) 170656b8d6cSValentin Clement! CHECK: ^bb18: 171656b8d6cSValentin Clement! CHECK: %[[VAL_138:.*]] = fir.load %[[VAL_77]] : !fir.ref<f32> 172656b8d6cSValentin Clement! CHECK: %[[VAL_139:.*]] = fir.coordinate_of %[[VAL_27]], %[[VAL_19]] : (!fir.ref<!fir.array<10xf32>>, i64) -> !fir.ref<f32> 173656b8d6cSValentin Clement! CHECK: %[[VAL_140:.*]] = fir.load %[[VAL_139]] : !fir.ref<f32> 174656b8d6cSValentin Clement! CHECK: %[[VAL_141:.*]] = arith.cmpf une, %[[VAL_138]], %[[VAL_140]] : f32 175656b8d6cSValentin Clement! CHECK: cond_br %[[VAL_141]], ^bb19, ^bb20 176656b8d6cSValentin Clement! CHECK: ^bb19: 177656b8d6cSValentin Clement! CHECK: %[[VAL_142:.*]] = fir.address_of(@_QQcl.{{.*}}) : !fir.ref<!fir.char<1, 178656b8d6cSValentin Clement! CHECK: %[[VAL_143:.*]] = fir.convert %[[VAL_142]] : (!fir.ref<!fir.char<1,{{.*}}>>) -> !fir.ref<i8> 179656b8d6cSValentin Clement! CHECK: %[[VAL_144:.*]] = fir.call @_FortranAioBeginExternalListOutput(%[[VAL_18]], %[[VAL_143]], %{{.*}}) : (i32, !fir.ref<i8>, i32) -> !fir.ref<i8> 180656b8d6cSValentin Clement! CHECK: %[[VAL_145:.*]] = fir.address_of(@_QQcl.6D69736D617463682034) : !fir.ref<!fir.char<1,10>> 181656b8d6cSValentin Clement! CHECK: %[[VAL_146:.*]] = fir.convert %[[VAL_145]] : (!fir.ref<!fir.char<1,10>>) -> !fir.ref<i8> 182656b8d6cSValentin Clement! CHECK: %[[VAL_147:.*]] = fir.convert %[[VAL_0]] : (index) -> i64 183656b8d6cSValentin Clement! CHECK: %[[VAL_148:.*]] = fir.call @_FortranAioOutputAscii(%[[VAL_144]], %[[VAL_146]], %[[VAL_147]]) : (!fir.ref<i8>, !fir.ref<i8>, i64) -> i1 184656b8d6cSValentin Clement! CHECK: %[[VAL_149:.*]] = fir.load %[[VAL_77]] : !fir.ref<f32> 185656b8d6cSValentin Clement! CHECK: %[[VAL_150:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_144]], %[[VAL_149]]) : (!fir.ref<i8>, f32) -> i1 186656b8d6cSValentin Clement! CHECK: %[[VAL_151:.*]] = fir.load %[[VAL_139]] : !fir.ref<f32> 187656b8d6cSValentin Clement! CHECK: %[[VAL_152:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_144]], %[[VAL_151]]) : (!fir.ref<i8>, f32) -> i1 188656b8d6cSValentin Clement! CHECK: %[[VAL_153:.*]] = fir.call @_FortranAioEndIoStatement(%[[VAL_144]]) : (!fir.ref<i8>) -> i32 189656b8d6cSValentin Clement! CHECK: br ^bb20 190656b8d6cSValentin Clement! CHECK: ^bb20: 191656b8d6cSValentin Clement! CHECK: %[[VAL_154:.*]] = fir.load %[[VAL_94]] : !fir.ref<f32> 192656b8d6cSValentin Clement! CHECK: %[[VAL_155:.*]] = fir.coordinate_of %[[VAL_27]], %[[VAL_16]] : (!fir.ref<!fir.array<10xf32>>, i64) -> !fir.ref<f32> 193656b8d6cSValentin Clement! CHECK: %[[VAL_156:.*]] = fir.load %[[VAL_155]] : !fir.ref<f32> 194656b8d6cSValentin Clement! CHECK: %[[VAL_157:.*]] = arith.cmpf une, %[[VAL_154]], %[[VAL_156]] : f32 195656b8d6cSValentin Clement! CHECK: cond_br %[[VAL_157]], ^bb21, ^bb22 196656b8d6cSValentin Clement! CHECK: ^bb21: 197656b8d6cSValentin Clement! CHECK: %[[VAL_158:.*]] = fir.address_of(@_QQcl.{{.*}}) : !fir.ref<!fir.char<1, 198656b8d6cSValentin Clement! CHECK: %[[VAL_159:.*]] = fir.convert %[[VAL_158]] : (!fir.ref<!fir.char<1,{{.*}}>>) -> !fir.ref<i8> 199656b8d6cSValentin Clement! CHECK: %[[VAL_160:.*]] = fir.call @_FortranAioBeginExternalListOutput(%[[VAL_18]], %[[VAL_159]], %{{.*}}) : (i32, !fir.ref<i8>, i32) -> !fir.ref<i8> 200656b8d6cSValentin Clement! CHECK: %[[VAL_161:.*]] = fir.address_of(@_QQcl.6D69736D617463682035) : !fir.ref<!fir.char<1,10>> 201656b8d6cSValentin Clement! CHECK: %[[VAL_162:.*]] = fir.convert %[[VAL_161]] : (!fir.ref<!fir.char<1,10>>) -> !fir.ref<i8> 202656b8d6cSValentin Clement! CHECK: %[[VAL_163:.*]] = fir.convert %[[VAL_0]] : (index) -> i64 203656b8d6cSValentin Clement! CHECK: %[[VAL_164:.*]] = fir.call @_FortranAioOutputAscii(%[[VAL_160]], %[[VAL_162]], %[[VAL_163]]) : (!fir.ref<i8>, !fir.ref<i8>, i64) -> i1 204656b8d6cSValentin Clement! CHECK: %[[VAL_165:.*]] = fir.load %[[VAL_94]] : !fir.ref<f32> 205656b8d6cSValentin Clement! CHECK: %[[VAL_166:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_160]], %[[VAL_165]]) : (!fir.ref<i8>, f32) -> i1 206656b8d6cSValentin Clement! CHECK: %[[VAL_167:.*]] = fir.load %[[VAL_155]] : !fir.ref<f32> 207656b8d6cSValentin Clement! CHECK: %[[VAL_168:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_160]], %[[VAL_167]]) : (!fir.ref<i8>, f32) -> i1 208656b8d6cSValentin Clement! CHECK: %[[VAL_169:.*]] = fir.call @_FortranAioEndIoStatement(%[[VAL_160]]) : (!fir.ref<i8>) -> i32 209656b8d6cSValentin Clement! CHECK: br ^bb22 210656b8d6cSValentin Clement! CHECK: ^bb22: 211656b8d6cSValentin Clement! CHECK: %[[VAL_170:.*]] = fir.load %[[VAL_111]] : !fir.ref<f32> 212656b8d6cSValentin Clement! CHECK: %[[VAL_171:.*]] = fir.coordinate_of %[[VAL_27]], %[[VAL_8]] : (!fir.ref<!fir.array<10xf32>>, i64) -> !fir.ref<f32> 213656b8d6cSValentin Clement! CHECK: %[[VAL_172:.*]] = fir.load %[[VAL_171]] : !fir.ref<f32> 214656b8d6cSValentin Clement! CHECK: %[[VAL_173:.*]] = arith.cmpf une, %[[VAL_170]], %[[VAL_172]] : f32 215656b8d6cSValentin Clement! CHECK: cond_br %[[VAL_173]], ^bb23, ^bb24 216656b8d6cSValentin Clement! CHECK: ^bb23: 217656b8d6cSValentin Clement! CHECK: %[[VAL_174:.*]] = fir.address_of(@_QQcl.{{.*}}) : !fir.ref<!fir.char<1, 218656b8d6cSValentin Clement! CHECK: %[[VAL_175:.*]] = fir.convert %[[VAL_174]] : (!fir.ref<!fir.char<1,{{.*}}>>) -> !fir.ref<i8> 219656b8d6cSValentin Clement! CHECK: %[[VAL_176:.*]] = fir.call @_FortranAioBeginExternalListOutput(%[[VAL_18]], %[[VAL_175]], %{{.*}}) : (i32, !fir.ref<i8>, i32) -> !fir.ref<i8> 220656b8d6cSValentin Clement! CHECK: %[[VAL_177:.*]] = fir.address_of(@_QQcl.6D69736D617463682036) : !fir.ref<!fir.char<1,10>> 221656b8d6cSValentin Clement! CHECK: %[[VAL_178:.*]] = fir.convert %[[VAL_177]] : (!fir.ref<!fir.char<1,10>>) -> !fir.ref<i8> 222656b8d6cSValentin Clement! CHECK: %[[VAL_179:.*]] = fir.convert %[[VAL_0]] : (index) -> i64 223656b8d6cSValentin Clement! CHECK: %[[VAL_180:.*]] = fir.call @_FortranAioOutputAscii(%[[VAL_176]], %[[VAL_178]], %[[VAL_179]]) : (!fir.ref<i8>, !fir.ref<i8>, i64) -> i1 224656b8d6cSValentin Clement! CHECK: %[[VAL_181:.*]] = fir.load %[[VAL_111]] : !fir.ref<f32> 225656b8d6cSValentin Clement! CHECK: %[[VAL_182:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_176]], %[[VAL_181]]) : (!fir.ref<i8>, f32) -> i1 226656b8d6cSValentin Clement! CHECK: %[[VAL_183:.*]] = fir.load %[[VAL_171]] : !fir.ref<f32> 227656b8d6cSValentin Clement! CHECK: %[[VAL_184:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_176]], %[[VAL_183]]) : (!fir.ref<i8>, f32) -> i1 228656b8d6cSValentin Clement! CHECK: %[[VAL_185:.*]] = fir.call @_FortranAioEndIoStatement(%[[VAL_176]]) : (!fir.ref<i8>) -> i32 229656b8d6cSValentin Clement! CHECK: br ^bb24 230656b8d6cSValentin Clement! CHECK: ^bb24: 231656b8d6cSValentin Clement! CHECK: %[[VAL_186:.*]] = fir.address_of(@_QQro.3xi4.b7f1b733471804c07debf489e49d9c2f) : !fir.ref<!fir.array<3xi32>> 232656b8d6cSValentin Clement! CHECK: br ^bb25(%[[VAL_6]], %[[VAL_11]] : index, index) 233656b8d6cSValentin Clement! CHECK: ^bb25(%[[VAL_187:.*]]: index, %[[VAL_188:.*]]: index): 234656b8d6cSValentin Clement! CHECK: %[[VAL_189:.*]] = arith.cmpi sgt, %[[VAL_188]], %[[VAL_6]] : index 235656b8d6cSValentin Clement! CHECK: cond_br %[[VAL_189]], ^bb26, ^bb27 236656b8d6cSValentin Clement! CHECK: ^bb26: 237656b8d6cSValentin Clement! CHECK: %[[VAL_190:.*]] = arith.addi %[[VAL_187]], %[[VAL_5]] : index 238656b8d6cSValentin Clement! CHECK: %[[VAL_191:.*]] = fir.array_coor %[[VAL_186]](%[[VAL_65]]) %[[VAL_190]] : (!fir.ref<!fir.array<3xi32>>, !fir.shape<1>, index) -> !fir.ref<i32> 239656b8d6cSValentin Clement! CHECK: %[[VAL_192:.*]] = fir.load %[[VAL_191]] : !fir.ref<i32> 240656b8d6cSValentin Clement! CHECK: %[[VAL_193:.*]] = fir.array_coor %[[VAL_29]](%[[VAL_65]]) %[[VAL_190]] : (!fir.ref<!fir.array<3xi32>>, !fir.shape<1>, index) -> !fir.ref<i32> 241656b8d6cSValentin Clement! CHECK: fir.store %[[VAL_192]] to %[[VAL_193]] : !fir.ref<i32> 242656b8d6cSValentin Clement! CHECK: %[[VAL_194:.*]] = arith.subi %[[VAL_188]], %[[VAL_5]] : index 243656b8d6cSValentin Clement! CHECK: br ^bb25(%[[VAL_190]], %[[VAL_194]] : index, index) 244656b8d6cSValentin Clement! CHECK: ^bb27: 245656b8d6cSValentin Clement! CHECK: %[[VAL_195:.*]] = fir.allocmem !fir.array<3xf32> 246656b8d6cSValentin Clement! CHECK: br ^bb28(%[[VAL_6]], %[[VAL_11]] : index, index) 247656b8d6cSValentin Clement! CHECK: ^bb28(%[[VAL_196:.*]]: index, %[[VAL_197:.*]]: index): 248656b8d6cSValentin Clement! CHECK: %[[VAL_198:.*]] = arith.cmpi sgt, %[[VAL_197]], %[[VAL_6]] : index 249656b8d6cSValentin Clement! CHECK: cond_br %[[VAL_198]], ^bb29, ^bb30 250656b8d6cSValentin Clement! CHECK: ^bb29: 251656b8d6cSValentin Clement! CHECK: %[[VAL_199:.*]] = arith.addi %[[VAL_196]], %[[VAL_5]] : index 252656b8d6cSValentin Clement! CHECK: %[[VAL_200:.*]] = fir.array_coor %[[VAL_26]](%[[VAL_65]]) %[[VAL_199]] : (!fir.ref<!fir.array<3xf32>>, !fir.shape<1>, index) -> !fir.ref<f32> 253656b8d6cSValentin Clement! CHECK: %[[VAL_201:.*]] = fir.array_coor %[[VAL_195]](%[[VAL_65]]) %[[VAL_199]] : (!fir.heap<!fir.array<3xf32>>, !fir.shape<1>, index) -> !fir.ref<f32> 254656b8d6cSValentin Clement! CHECK: %[[VAL_202:.*]] = fir.load %[[VAL_200]] : !fir.ref<f32> 255656b8d6cSValentin Clement! CHECK: fir.store %[[VAL_202]] to %[[VAL_201]] : !fir.ref<f32> 256656b8d6cSValentin Clement! CHECK: %[[VAL_203:.*]] = arith.subi %[[VAL_197]], %[[VAL_5]] : index 257656b8d6cSValentin Clement! CHECK: br ^bb28(%[[VAL_199]], %[[VAL_203]] : index, index) 258656b8d6cSValentin Clement! CHECK: ^bb30(%[[VAL_205:.*]]: index, %[[VAL_206:.*]]: index): 259656b8d6cSValentin Clement! CHECK: %[[VAL_207:.*]] = arith.cmpi sgt, %[[VAL_206]], %[[VAL_6]] : index 260656b8d6cSValentin Clement! CHECK: cond_br %[[VAL_207]], ^bb31, ^bb32(%[[VAL_6]], %[[VAL_11]] : index, index) 261656b8d6cSValentin Clement! CHECK: ^bb31: 262656b8d6cSValentin Clement! CHECK: %[[VAL_208:.*]] = arith.addi %[[VAL_205]], %[[VAL_5]] : index 263656b8d6cSValentin Clement! CHECK: %[[VAL_209:.*]] = fir.array_coor %[[VAL_29]](%[[VAL_65]]) %[[VAL_208]] : (!fir.ref<!fir.array<3xi32>>, !fir.shape<1>, index) -> !fir.ref<i32> 264656b8d6cSValentin Clement! CHECK: %[[VAL_210:.*]] = fir.load %[[VAL_209]] : !fir.ref<i32> 265656b8d6cSValentin Clement! CHECK: %[[VAL_211:.*]] = fir.convert %[[VAL_210]] : (i32) -> index 266656b8d6cSValentin Clement! CHECK: %[[VAL_212:.*]] = fir.array_coor %[[VAL_26]](%[[VAL_65]]) %[[VAL_211]] : (!fir.ref<!fir.array<3xf32>>, !fir.shape<1>, index) -> !fir.ref<f32> 267656b8d6cSValentin Clement! CHECK: %[[VAL_213:.*]] = fir.load %[[VAL_212]] : !fir.ref<f32> 268656b8d6cSValentin Clement! CHECK: %[[VAL_214:.*]] = fir.array_coor %[[VAL_195]](%[[VAL_65]]) %[[VAL_208]] : (!fir.heap<!fir.array<3xf32>>, !fir.shape<1>, index) -> !fir.ref<f32> 269656b8d6cSValentin Clement! CHECK: fir.store %[[VAL_213]] to %[[VAL_214]] : !fir.ref<f32> 270656b8d6cSValentin Clement! CHECK: %[[VAL_215:.*]] = arith.subi %[[VAL_206]], %[[VAL_5]] : index 271656b8d6cSValentin Clement! CHECK: br ^bb30(%[[VAL_208]], %[[VAL_215]] : index, index) 272656b8d6cSValentin Clement! CHECK: ^bb32(%[[VAL_216:.*]]: index, %[[VAL_217:.*]]: index): 273656b8d6cSValentin Clement! CHECK: %[[VAL_218:.*]] = arith.cmpi sgt, %[[VAL_217]], %[[VAL_6]] : index 274656b8d6cSValentin Clement! CHECK: cond_br %[[VAL_218]], ^bb33, ^bb34 275656b8d6cSValentin Clement! CHECK: ^bb33: 276656b8d6cSValentin Clement! CHECK: %[[VAL_219:.*]] = arith.addi %[[VAL_216]], %[[VAL_5]] : index 277656b8d6cSValentin Clement! CHECK: %[[VAL_220:.*]] = fir.array_coor %[[VAL_195]](%[[VAL_65]]) %[[VAL_219]] : (!fir.heap<!fir.array<3xf32>>, !fir.shape<1>, index) -> !fir.ref<f32> 278656b8d6cSValentin Clement! CHECK: %[[VAL_221:.*]] = fir.array_coor %[[VAL_26]](%[[VAL_65]]) %[[VAL_219]] : (!fir.ref<!fir.array<3xf32>>, !fir.shape<1>, index) -> !fir.ref<f32> 279656b8d6cSValentin Clement! CHECK: %[[VAL_222:.*]] = fir.load %[[VAL_220]] : !fir.ref<f32> 280656b8d6cSValentin Clement! CHECK: fir.store %[[VAL_222]] to %[[VAL_221]] : !fir.ref<f32> 281656b8d6cSValentin Clement! CHECK: %[[VAL_223:.*]] = arith.subi %[[VAL_217]], %[[VAL_5]] : index 282656b8d6cSValentin Clement! CHECK: br ^bb32(%[[VAL_219]], %[[VAL_223]] : index, index) 283656b8d6cSValentin Clement! CHECK: ^bb34: 284656b8d6cSValentin Clement! CHECK: fir.freemem %[[VAL_195]] : !fir.heap<!fir.array<3xf32>> 285656b8d6cSValentin Clement! CHECK: %[[VAL_224:.*]] = fir.load %[[VAL_77]] : !fir.ref<f32> 286656b8d6cSValentin Clement! CHECK: %[[VAL_225:.*]] = fir.load %[[VAL_96]] : !fir.ref<f32> 287656b8d6cSValentin Clement! CHECK: %[[VAL_226:.*]] = arith.cmpf une, %[[VAL_224]], %[[VAL_225]] : f32 288656b8d6cSValentin Clement! CHECK: cond_br %[[VAL_226]], ^bb35, ^bb36 289656b8d6cSValentin Clement! CHECK: ^bb35: 290656b8d6cSValentin Clement! CHECK: %[[VAL_227:.*]] = fir.address_of(@_QQcl.{{.*}}) : !fir.ref<!fir.char<1, 291656b8d6cSValentin Clement! CHECK: %[[VAL_228:.*]] = fir.convert %[[VAL_227]] : (!fir.ref<!fir.char<1,{{.*}}>>) -> !fir.ref<i8> 292656b8d6cSValentin Clement! CHECK: %[[VAL_229:.*]] = fir.call @_FortranAioBeginExternalListOutput(%[[VAL_18]], %[[VAL_228]], %{{.*}}) : (i32, !fir.ref<i8>, i32) -> !fir.ref<i8> 293656b8d6cSValentin Clement! CHECK: %[[VAL_230:.*]] = fir.address_of(@_QQcl.6D69736D617463682037) : !fir.ref<!fir.char<1,10>> 294656b8d6cSValentin Clement! CHECK: %[[VAL_231:.*]] = fir.convert %[[VAL_230]] : (!fir.ref<!fir.char<1,10>>) -> !fir.ref<i8> 295656b8d6cSValentin Clement! CHECK: %[[VAL_232:.*]] = fir.convert %[[VAL_0]] : (index) -> i64 296656b8d6cSValentin Clement! CHECK: %[[VAL_233:.*]] = fir.call @_FortranAioOutputAscii(%[[VAL_229]], %[[VAL_231]], %[[VAL_232]]) : (!fir.ref<i8>, !fir.ref<i8>, i64) -> i1 297656b8d6cSValentin Clement! CHECK: %[[VAL_234:.*]] = fir.load %[[VAL_77]] : !fir.ref<f32> 298656b8d6cSValentin Clement! CHECK: %[[VAL_235:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_229]], %[[VAL_234]]) : (!fir.ref<i8>, f32) -> i1 299656b8d6cSValentin Clement! CHECK: %[[VAL_236:.*]] = fir.load %[[VAL_96]] : !fir.ref<f32> 300656b8d6cSValentin Clement! CHECK: %[[VAL_237:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_229]], %[[VAL_236]]) : (!fir.ref<i8>, f32) -> i1 301656b8d6cSValentin Clement! CHECK: %[[VAL_238:.*]] = fir.call @_FortranAioEndIoStatement(%[[VAL_229]]) : (!fir.ref<i8>) -> i32 302656b8d6cSValentin Clement! CHECK: br ^bb36 303656b8d6cSValentin Clement! CHECK: ^bb36: 304656b8d6cSValentin Clement! CHECK: %[[VAL_239:.*]] = fir.load %[[VAL_94]] : !fir.ref<f32> 305656b8d6cSValentin Clement! CHECK: %[[VAL_240:.*]] = fir.load %[[VAL_113]] : !fir.ref<f32> 306656b8d6cSValentin Clement! CHECK: %[[VAL_241:.*]] = arith.cmpf une, %[[VAL_239]], %[[VAL_240]] : f32 307656b8d6cSValentin Clement! CHECK: cond_br %[[VAL_241]], ^bb37, ^bb38 308656b8d6cSValentin Clement! CHECK: ^bb37: 309656b8d6cSValentin Clement! CHECK: %[[VAL_242:.*]] = fir.address_of(@_QQcl.{{.*}}) : !fir.ref<!fir.char<1, 310656b8d6cSValentin Clement! CHECK: %[[VAL_243:.*]] = fir.convert %[[VAL_242]] : (!fir.ref<!fir.char<1,{{.*}}>>) -> !fir.ref<i8> 311656b8d6cSValentin Clement! CHECK: %[[VAL_244:.*]] = fir.call @_FortranAioBeginExternalListOutput(%[[VAL_18]], %[[VAL_243]], %{{.*}}) : (i32, !fir.ref<i8>, i32) -> !fir.ref<i8> 312656b8d6cSValentin Clement! CHECK: %[[VAL_245:.*]] = fir.address_of(@_QQcl.6D69736D617463682038) : !fir.ref<!fir.char<1,10>> 313656b8d6cSValentin Clement! CHECK: %[[VAL_246:.*]] = fir.convert %[[VAL_245]] : (!fir.ref<!fir.char<1,10>>) -> !fir.ref<i8> 314656b8d6cSValentin Clement! CHECK: %[[VAL_247:.*]] = fir.convert %[[VAL_0]] : (index) -> i64 315656b8d6cSValentin Clement! CHECK: %[[VAL_248:.*]] = fir.call @_FortranAioOutputAscii(%[[VAL_244]], %[[VAL_246]], %[[VAL_247]]) : (!fir.ref<i8>, !fir.ref<i8>, i64) -> i1 316656b8d6cSValentin Clement! CHECK: %[[VAL_249:.*]] = fir.load %[[VAL_94]] : !fir.ref<f32> 317656b8d6cSValentin Clement! CHECK: %[[VAL_250:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_244]], %[[VAL_249]]) : (!fir.ref<i8>, f32) -> i1 318656b8d6cSValentin Clement! CHECK: %[[VAL_251:.*]] = fir.load %[[VAL_113]] : !fir.ref<f32> 319656b8d6cSValentin Clement! CHECK: %[[VAL_252:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_244]], %[[VAL_251]]) : (!fir.ref<i8>, f32) -> i1 320656b8d6cSValentin Clement! CHECK: %[[VAL_253:.*]] = fir.call @_FortranAioEndIoStatement(%[[VAL_244]]) : (!fir.ref<i8>) -> i32 321656b8d6cSValentin Clement! CHECK: br ^bb38 322656b8d6cSValentin Clement! CHECK: ^bb38: 323656b8d6cSValentin Clement! CHECK: %[[VAL_254:.*]] = fir.load %[[VAL_111]] : !fir.ref<f32> 324656b8d6cSValentin Clement! CHECK: %[[VAL_255:.*]] = fir.load %[[VAL_79]] : !fir.ref<f32> 325656b8d6cSValentin Clement! CHECK: %[[VAL_256:.*]] = arith.cmpf une, %[[VAL_254]], %[[VAL_255]] : f32 326656b8d6cSValentin Clement! CHECK: cond_br %[[VAL_256]], ^bb39, ^bb40 327656b8d6cSValentin Clement! CHECK: ^bb39: 328656b8d6cSValentin Clement! CHECK: %[[VAL_257:.*]] = fir.address_of(@_QQcl.{{.*}}) : !fir.ref<!fir.char<1, 329656b8d6cSValentin Clement! CHECK: %[[VAL_258:.*]] = fir.convert %[[VAL_257]] : (!fir.ref<!fir.char<1,{{.*}}>>) -> !fir.ref<i8> 330656b8d6cSValentin Clement! CHECK: %[[VAL_259:.*]] = fir.call @_FortranAioBeginExternalListOutput(%[[VAL_18]], %[[VAL_258]], %{{.*}}) : (i32, !fir.ref<i8>, i32) -> !fir.ref<i8> 331656b8d6cSValentin Clement! CHECK: %[[VAL_260:.*]] = fir.address_of(@_QQcl.6D69736D617463682039) : !fir.ref<!fir.char<1,10>> 332656b8d6cSValentin Clement! CHECK: %[[VAL_261:.*]] = fir.convert %[[VAL_260]] : (!fir.ref<!fir.char<1,10>>) -> !fir.ref<i8> 333656b8d6cSValentin Clement! CHECK: %[[VAL_262:.*]] = fir.convert %[[VAL_0]] : (index) -> i64 334656b8d6cSValentin Clement! CHECK: %[[VAL_263:.*]] = fir.call @_FortranAioOutputAscii(%[[VAL_259]], %[[VAL_261]], %[[VAL_262]]) : (!fir.ref<i8>, !fir.ref<i8>, i64) -> i1 335656b8d6cSValentin Clement! CHECK: %[[VAL_264:.*]] = fir.load %[[VAL_111]] : !fir.ref<f32> 336656b8d6cSValentin Clement! CHECK: %[[VAL_265:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_259]], %[[VAL_264]]) : (!fir.ref<i8>, f32) -> i1 337656b8d6cSValentin Clement! CHECK: %[[VAL_266:.*]] = fir.load %[[VAL_79]] : !fir.ref<f32> 338656b8d6cSValentin Clement! CHECK: %[[VAL_267:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_259]], %[[VAL_266]]) : (!fir.ref<i8>, f32) -> i1 339656b8d6cSValentin Clement! CHECK: %[[VAL_268:.*]] = fir.call @_FortranAioEndIoStatement(%[[VAL_259]]) : (!fir.ref<i8>) -> i32 340656b8d6cSValentin Clement! CHECK: br ^bb40 341656b8d6cSValentin Clement! CHECK: ^bb40: 342656b8d6cSValentin Clement! CHECK: return 343656b8d6cSValentin Clement! CHECK: } 344656b8d6cSValentin Clement 345656b8d6cSValentin Clementprogram p 346656b8d6cSValentin Clement real :: a1(10,10) 347656b8d6cSValentin Clement real :: a2(3) 348656b8d6cSValentin Clement real :: a3(10) 349656b8d6cSValentin Clement integer iv(3) 350656b8d6cSValentin Clement integer k 351656b8d6cSValentin Clement 352656b8d6cSValentin Clement k = 0 353656b8d6cSValentin Clement do j = 1, 10 354656b8d6cSValentin Clement do i = 1, 10 355656b8d6cSValentin Clement k = k + 1 356656b8d6cSValentin Clement a1(i,j) = cos(real(k)) 357656b8d6cSValentin Clement end do 358656b8d6cSValentin Clement a3(j) = sin(real(k)) 359656b8d6cSValentin Clement end do 360656b8d6cSValentin Clement 361656b8d6cSValentin Clement a2 = a1(4, 2:10:3) 362656b8d6cSValentin Clement 363656b8d6cSValentin Clement if (a1(4,2) .ne. a2(1)) print *, "mismatch 1", a2(1), a1(4,2) 364656b8d6cSValentin Clement if (a1(4,5) .ne. a2(2)) print *, "mismatch 2", a2(2), a1(4,5) 365656b8d6cSValentin Clement if (a1(4,8) .ne. a2(3)) print *, "mismatch 3", a2(3), a1(4,8) 366656b8d6cSValentin Clement 367656b8d6cSValentin Clement a3(1:10:4) = a2 368656b8d6cSValentin Clement 369656b8d6cSValentin Clement if (a1(4,2) .ne. a3(1)) print *, "mismatch 4", a1(4,2), a3(1) 370656b8d6cSValentin Clement if (a1(4,5) .ne. a3(5)) print *, "mismatch 5", a1(4,5), a3(5) 371656b8d6cSValentin Clement if (a1(4,8) .ne. a3(9)) print *, "mismatch 6", a1(4,8), a3(9) 372656b8d6cSValentin Clement 373656b8d6cSValentin Clement iv = (/ 3, 1, 2 /) 374656b8d6cSValentin Clement 375656b8d6cSValentin Clement a2 = a2(iv) 376656b8d6cSValentin Clement 377656b8d6cSValentin Clement if (a1(4,2) .ne. a2(2)) print *, "mismatch 7", a1(4,2), a2(2) 378656b8d6cSValentin Clement if (a1(4,5) .ne. a2(3)) print *, "mismatch 8", a1(4,5), a2(3) 379656b8d6cSValentin Clement if (a1(4,8) .ne. a2(1)) print *, "mismatch 9", a1(4,8), a2(1) 380656b8d6cSValentin Clement 381656b8d6cSValentin Clementend program p 382656b8d6cSValentin Clement 383656b8d6cSValentin Clement! CHECK-LABEL: func @_QPsub( 384656b8d6cSValentin Clement! CHECK-SAME: %[[VAL_0:.*]]: !fir.boxchar<1>{{.*}}) { 385656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_1:.*]] = arith.constant 5 : index 386656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_2:.*]] = arith.constant 2 : index 387656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_3:.*]] = arith.constant 1 : index 388656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_4:.*]] = arith.constant 4 : index 389656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_6:.*]] = arith.constant -1 : i32 390656b8d6cSValentin Clement! CHECK-DAG: %[[VAL_7:.*]] = arith.constant 10 : index 391656b8d6cSValentin Clement! CHECK: %[[VAL_8:.*]]:2 = fir.unboxchar %[[VAL_0]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 392656b8d6cSValentin Clement! CHECK: %[[VAL_9:.*]] = fir.convert %[[VAL_8]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.array<10x!fir.char<1>>> 393656b8d6cSValentin Clement! CHECK: %[[VAL_10:.*]] = fir.address_of(@_QQcl.{{.*}}) : !fir.ref<!fir.char<1, 394656b8d6cSValentin Clement! CHECK: %[[VAL_11:.*]] = fir.convert %[[VAL_10]] : (!fir.ref<!fir.char<1,{{.*}}>>) -> !fir.ref<i8> 395656b8d6cSValentin Clement! CHECK: %[[VAL_12:.*]] = fir.call @_FortranAioBeginExternalListOutput(%[[VAL_6]], %[[VAL_11]], %{{.*}}) : (i32, !fir.ref<i8>, i32) -> !fir.ref<i8> 396656b8d6cSValentin Clement! CHECK: %[[VAL_13:.*]] = fir.address_of(@_QQcl.61203D20) : !fir.ref<!fir.char<1,4>> 397656b8d6cSValentin Clement! CHECK: %[[VAL_14:.*]] = fir.convert %[[VAL_13]] : (!fir.ref<!fir.char<1,4>>) -> !fir.ref<i8> 398656b8d6cSValentin Clement! CHECK: %[[VAL_15:.*]] = fir.convert %[[VAL_4]] : (index) -> i64 399656b8d6cSValentin Clement! CHECK: %[[VAL_16:.*]] = fir.call @_FortranAioOutputAscii(%[[VAL_12]], %[[VAL_14]], %[[VAL_15]]) : (!fir.ref<i8>, !fir.ref<i8>, i64) -> i1 400656b8d6cSValentin Clement! CHECK: %[[VAL_17:.*]] = fir.shape %[[VAL_7]] : (index) -> !fir.shape<1> 401656b8d6cSValentin Clement! CHECK: %[[VAL_18:.*]] = fir.slice %[[VAL_3]], %[[VAL_1]], %[[VAL_2]] : (index, index, index) -> !fir.slice<1> 402*13f9089aSPeixin Qiao! CHECK: %[[VAL_19:.*]] = fir.embox %[[VAL_9]](%[[VAL_17]]) {{\[}}%[[VAL_18]]] : (!fir.ref<!fir.array<10x!fir.char<1>>>, !fir.shape<1>, !fir.slice<1>) -> !fir.box<!fir.array<3x!fir.char<1>>> 403*13f9089aSPeixin Qiao! CHECK: %[[VAL_20:.*]] = fir.convert %[[VAL_19]] : (!fir.box<!fir.array<3x!fir.char<1>>>) -> !fir.box<none> 404656b8d6cSValentin Clement! CHECK: %[[VAL_21:.*]] = fir.call @_FortranAioOutputDescriptor(%[[VAL_12]], %[[VAL_20]]) : (!fir.ref<i8>, !fir.box<none>) -> i1 405656b8d6cSValentin Clement! CHECK: %[[VAL_22:.*]] = fir.call @_FortranAioEndIoStatement(%[[VAL_12]]) : (!fir.ref<i8>) -> i32 406656b8d6cSValentin Clement! CHECK: return 407656b8d6cSValentin Clement! CHECK: } 408656b8d6cSValentin Clement 409656b8d6cSValentin Clement! Slice operation on array of CHARACTER 410656b8d6cSValentin Clementsubroutine sub(a) 411656b8d6cSValentin Clement character :: a(10) 412656b8d6cSValentin Clement print *, "a = ", a(1:5:2) 413656b8d6cSValentin Clementend subroutine sub 414