brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · 842b318 Raw
48 lines · plain
1! Test lowering of character concatenation to HLFIR2! RUN: bbc -emit-hlfir -o - %s 2>&1 | FileCheck %s3 4subroutine concat(c1, c2, c3)5  character(*) :: c1, c2, c36  c1 = c2 // c37end subroutine8! CHECK-LABEL: func.func @_QPconcat9! CHECK:  hlfir.declare {{.*}}c110! CHECK:  %[[VAL_5:.*]]:2 = fir.unboxchar %{{.*}} : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)11! CHECK:  %[[VAL_6:.*]]:2 = hlfir.declare {{.*}}c212! CHECK:  %[[VAL_7:.*]]:2 = fir.unboxchar %{{.*}} : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)13! CHECK:  %[[VAL_8:.*]]:2 = hlfir.declare {{.*}}c314! CHECK:  %[[VAL_9:.*]] = arith.addi %[[VAL_5]]#1, %[[VAL_7]]#1 : index15! CHECK:  %[[VAL_10:.*]] = hlfir.concat %[[VAL_6]]#0, %[[VAL_8]]#0 len %[[VAL_9]] : (!fir.boxchar<1>, !fir.boxchar<1>, index) -> !hlfir.expr<!fir.char<1,?>>16 17subroutine concat_2(c1, c2, c3)18  character(*) :: c1(100)19  character :: c2(100)*10, c3(100)*2020  c1(1) = c2(1) // c3(1)21end subroutine22! CHECK-LABEL: func.func @_QPconcat_223! CHECK:  %[[VAL_9:.*]] = arith.constant 10 : index24! CHECK:  %[[VAL_13:.*]]:2 = hlfir.declare %{{.*}}c225! CHECK:  %[[VAL_15:.*]] = arith.constant 20 : index26! CHECK:  %[[VAL_19:.*]]:2 = hlfir.declare {{.*}}c327! CHECK:  %[[VAL_21:.*]] = hlfir.designate %[[VAL_13]]#0 (%{{.*}})  typeparams %[[VAL_9]] : (!fir.ref<!fir.array<100x!fir.char<1,10>>>, index, index) -> !fir.ref<!fir.char<1,10>>28! CHECK:  %[[VAL_23:.*]] = hlfir.designate %[[VAL_19]]#0 (%{{.*}})  typeparams %[[VAL_15]] : (!fir.ref<!fir.array<100x!fir.char<1,20>>>, index, index) -> !fir.ref<!fir.char<1,20>>29! CHECK:  %[[VAL_24:.*]] = arith.addi %[[VAL_9]], %[[VAL_15]] : index30! CHECK:  %[[VAL_25:.*]] = hlfir.concat %[[VAL_21]], %[[VAL_23]] len %[[VAL_24]] : (!fir.ref<!fir.char<1,10>>, !fir.ref<!fir.char<1,20>>, index) -> !hlfir.expr<!fir.char<1,30>>31 32subroutine concat3(c1, c2, c3, c4)33  character(*) :: c1, c2, c3, c434  c1 = c2 // c3 // c435end subroutine36! CHECK-LABEL: func.func @_QPconcat337! CHECK:  hlfir.declare {{.*}}c138! CHECK:  %[[VAL_5:.*]]:2 = fir.unboxchar %{{.*}}39! CHECK:  %[[VAL_6:.*]]:2 = hlfir.declare {{.*}}c240! CHECK:  %[[VAL_7:.*]]:2 = fir.unboxchar %{{.*}}41! CHECK:  %[[VAL_8:.*]]:2 = hlfir.declare {{.*}}c342! CHECK:  %[[VAL_9:.*]]:2 = fir.unboxchar %{{.*}}43! CHECK:  %[[VAL_10:.*]]:2 = hlfir.declare {{.*}}c444! CHECK:  %[[VAL_11:.*]] = arith.addi %[[VAL_5]]#1, %[[VAL_7]]#1 : index45! CHECK:  %[[VAL_12:.*]] = hlfir.concat %[[VAL_6]]#0, %[[VAL_8]]#0 len %[[VAL_11]] : (!fir.boxchar<1>, !fir.boxchar<1>, index) -> !hlfir.expr<!fir.char<1,?>>46! CHECK:  %[[VAL_13:.*]] = arith.addi %[[VAL_11]], %[[VAL_9]]#1 : index47! CHECK:  %[[VAL_14:.*]] = hlfir.concat %[[VAL_12]], %[[VAL_10]]#0 len %[[VAL_13]] : (!hlfir.expr<!fir.char<1,?>>, !fir.boxchar<1>, index) -> !hlfir.expr<!fir.char<1,?>>48