1! RUN: bbc %s -o - | FileCheck %s 2 3! CHECK-LABEL: func @_QPformatassign 4subroutine formatAssign(flag1, flag2, flag3) 5 real :: pi 6 integer :: label 7 logical :: flag1, flag2, flag3 8 9 ! CHECK-DAG: %[[ONE:.*]] = arith.constant 100 : i32 10 ! CHECK-DAG: %[[TWO:.*]] = arith.constant 200 : i32 11 if (flag1) then 12 assign 100 to label 13 else 14 assign 200 to label 15 end if 16 17 ! CHECK: cond_br %{{.*}}, ^bb[[BLK1:.*]], ^bb[[BLK2:.*]] 18 ! CHECK: ^bb[[BLK1]]: 19 ! CHECK: fir.store %[[ONE]] 20 ! CHECK: br ^bb[[END_BLOCK:.*]] 21 ! CHECK: ^bb[[BLK2]]: 22 ! CHECK: fir.store %[[TWO]] 23 ! CHECK: br ^bb[[END_BLOCK]] 24 ! CHECK: ^bb[[END_BLOCK]] 25 ! CHECK: fir.call @{{.*}}ReportFatalUserError 26 ! CHECK: fir.unreachable 27 ! CHECK: fir.call @{{.*}}BeginExternalFormattedOutput 28 ! CHECK: fir.call @{{.*}}OutputAscii 29 ! CHECK: fir.call @{{.*}}OutputReal32 30 ! CHECK: fir.call @{{.*}}EndIoStatement 31 pi = 3.141592653589 32 write(*, label) " PI=", pi 33 ! CHECK: fir.call @{{.*}}ReportFatalUserError 34 ! CHECK: fir.unreachable 35 ! CHECK: fir.call @{{.*}}BeginExternalFormattedOutput 36 ! CHECK: fir.call @{{.*}}OutputAscii 37 ! CHECK: fir.call @{{.*}}OutputReal32 38 ! CHECK: fir.call @{{.*}}EndIoStatement 39 if (flag2) write(*, label) "2PI=", 2*pi 40 if (flag1 .and. flag2 .and. flag3) then 41 assign 100 to label 42 else 43 assign 200 to label 44 end if 45 if (flag3) then 46 ! CHECK: fir.call @{{.*}}ReportFatalUserError 47 ! CHECK: fir.unreachable 48 ! CHECK: fir.call @{{.*}}BeginExternalFormattedOutput 49 ! CHECK: fir.call @{{.*}}OutputAscii 50 ! CHECK: fir.call @{{.*}}OutputReal32 51 ! CHECK: fir.call @{{.*}}EndIoStatement 52 write(*, label) "3PI=", 3*pi 53 endif 54 55100 format (A, F10.3) 56200 format (A,E8.1) 57300 format (A, E4.2) 58 59end subroutine 60 61! CHECK-LABEL: func @_QQmain 62 call formatAssign(.true., .true., .true.) 63 print* 64 call formatAssign(.true., .false., .true.) 65end 66