brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 9b63029 Raw
33 lines · plain
1! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s2 3! CHECK-LABEL:  func.func @_QPtrim_test(4! CHECK-SAME:     %[[VAL_0:.*]]: !fir.boxchar<1> {fir.bindc_name = "c"}) {5! CHECK:          %[[VAL_1:.*]] = fir.dummy_scope : !fir.dscope6! CHECK-NEXT:     %[[VAL_2:.*]]:2 = fir.unboxchar %[[VAL_0]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)7! CHECK-NEXT:     %[[VAL_3:.*]]:2 = hlfir.declare %[[VAL_2]]#0 typeparams %[[VAL_2]]#1 dummy_scope %[[VAL_1]] arg {{[0-9]+}} {uniq_name = "_QFtrim_testEc"} : (!fir.ref<!fir.char<1,?>>, index, !fir.dscope) -> (!fir.boxchar<1>, !fir.ref<!fir.char<1,?>>)8! CHECK-NEXT:     %[[VAL_4:.*]] = arith.constant 8 : index9! CHECK-NEXT:     %[[VAL_5:.*]] = fir.alloca !fir.char<1,8> {bindc_name = "tc", uniq_name = "_QFtrim_testEtc"}10! CHECK-NEXT:     %[[VAL_6:.*]]:2 = hlfir.declare %[[VAL_5]] typeparams %[[VAL_4]] {uniq_name = "_QFtrim_testEtc"} : (!fir.ref<!fir.char<1,8>>, index) -> (!fir.ref<!fir.char<1,8>>, !fir.ref<!fir.char<1,8>>)11! CHECK-NEXT:     %[[VAL_7:.*]] = hlfir.char_trim %[[VAL_3]]#0 : (!fir.boxchar<1>) -> !hlfir.expr<!fir.char<1,?>>12! CHECK-NEXT:     hlfir.assign %[[VAL_7]] to %[[VAL_6]]#0 : !hlfir.expr<!fir.char<1,?>>, !fir.ref<!fir.char<1,8>>13! CHECK-NEXT:     hlfir.destroy %[[VAL_7]] : !hlfir.expr<!fir.char<1,?>>14! CHECK-NEXT:     return15! CHECK-NEXT:   }16subroutine trim_test(c)17  character(*) :: c18  character(8) :: tc19 20  tc = trim(c)21end subroutine22 23! Test trim with fixed length character.24! The length of the returned character type must be unknown.25! CHECK-LABEL:  func.func @_QPtrim_test2(26! CHECK:          hlfir.char_trim %{{.*}}#0 : (!fir.ref<!fir.char<1,8>>) -> !hlfir.expr<!fir.char<1,?>>27subroutine trim_test2(c)28  character(8) :: c29  character(8) :: tc30 31  tc = trim(c)32end subroutine33