! RUN: bbc -emit-hlfir %s -o - | FileCheck %s ! RUN: bbc -emit-hlfir -fwrapv %s -o - | FileCheck %s --check-prefix=NO-NSW ! NO-NSW-NOT: overflow ! CHECK-LABEL: func @_QPtest( ! CHECK-SAME: %[[arg0:.*]]: !fir.boxchar<1>{{.*}}) -> !fir.array<1x!fir.logical<4>> { ! CHECK: %[[unbox:.*]]:2 = fir.unboxchar %[[arg0]] ! CHECK: %[[addr:.*]] = fir.convert %[[unbox]]#0 ! CHECK: %[[c:.*]]:2 = hlfir.declare %[[addr]](%{{.*}}) typeparams %{{.*}} ! CHECK: %[[test:.*]]:2 = hlfir.declare %{{.*}} {uniq_name = "_QFtestEtest"} ! CHECK: %[[slice:.*]] = hlfir.designate %[[c]]#0 (%c1{{.*}}:%c1{{.*}}:%c1{{.*}}) substr %c1{{.*}}, %c8{{.*}} ! CHECK: %[[const:.*]]:2 = hlfir.declare %{{.*}} {fortran_attrs = #fir.var_attrs, uniq_name = "_QQro.1x8xc1.0"} ! CHECK: %[[res:.*]] = hlfir.elemental %{{.*}} unordered : (!fir.shape<1>) -> !hlfir.expr<1x!fir.logical<4>> { ! CHECK: ^bb0(%[[idx:.*]]: index): ! CHECK: %[[lhs_addr:.*]] = hlfir.designate %[[slice]] (%[[idx]]) ! CHECK: %[[rhs_addr:.*]] = hlfir.designate %[[const]]#0 (%[[idx]]) ! CHECK: %[[cmp:.*]] = hlfir.cmpchar eq %[[lhs_addr]] %[[rhs_addr]] ! CHECK: %[[cast:.*]] = fir.convert %[[cmp]] ! CHECK: hlfir.yield_element %[[cast]] ! CHECK: } ! CHECK: hlfir.assign %[[res]] to %[[test]]#0 ! CHECK: %[[ret:.*]] = fir.load %[[test]]#0 ! CHECK: return %[[ret]] function test(C) logical :: test(1) character*12 C(1) test = C(1:1)(1:8) == (/'ABCDabcd'/) end function test