! RUN: bbc %s -o - | FileCheck %s ! CHECK-LABEL: func @_QPformatassign subroutine formatAssign(flag1, flag2, flag3) real :: pi integer :: label logical :: flag1, flag2, flag3 ! CHECK-DAG: %[[ONE:.*]] = arith.constant 100 : i32 ! CHECK-DAG: %[[TWO:.*]] = arith.constant 200 : i32 if (flag1) then assign 100 to label else assign 200 to label end if ! CHECK: cond_br %{{.*}}, ^bb[[BLK1:.*]], ^bb[[BLK2:.*]] ! CHECK: ^bb[[BLK1]]: ! CHECK: fir.store %[[ONE]] ! CHECK: br ^bb[[END_BLOCK:.*]] ! CHECK: ^bb[[BLK2]]: ! CHECK: fir.store %[[TWO]] ! CHECK: br ^bb[[END_BLOCK]] ! CHECK: ^bb[[END_BLOCK]] ! CHECK: fir.call @{{.*}}ReportFatalUserError ! CHECK: fir.unreachable ! CHECK: fir.call @{{.*}}BeginExternalFormattedOutput ! CHECK: fir.call @{{.*}}OutputAscii ! CHECK: fir.call @{{.*}}OutputReal32 ! CHECK: fir.call @{{.*}}EndIoStatement pi = 3.141592653589 write(*, label) " PI=", pi ! CHECK: fir.call @{{.*}}ReportFatalUserError ! CHECK: fir.unreachable ! CHECK: fir.call @{{.*}}BeginExternalFormattedOutput ! CHECK: fir.call @{{.*}}OutputAscii ! CHECK: fir.call @{{.*}}OutputReal32 ! CHECK: fir.call @{{.*}}EndIoStatement if (flag2) write(*, label) "2PI=", 2*pi if (flag1 .and. flag2 .and. flag3) then assign 100 to label else assign 200 to label end if if (flag3) then ! CHECK: fir.call @{{.*}}ReportFatalUserError ! CHECK: fir.unreachable ! CHECK: fir.call @{{.*}}BeginExternalFormattedOutput ! CHECK: fir.call @{{.*}}OutputAscii ! CHECK: fir.call @{{.*}}OutputReal32 ! CHECK: fir.call @{{.*}}EndIoStatement write(*, label) "3PI=", 3*pi endif 100 format (A, F10.3) 200 format (A,E8.1) 300 format (A, E4.2) end subroutine ! CHECK-LABEL: func @_QQmain call formatAssign(.true., .true., .true.) print* call formatAssign(.true., .false., .true.) end