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 @{{.*}}BeginExternalFormattedOutput 26 ! CHECK: fir.call @{{.*}}OutputAscii 27 ! CHECK: fir.call @{{.*}}OutputReal32 28 ! CHECK: fir.call @{{.*}}EndIoStatement 29 pi = 3.141592653589 30 write(*, label) " PI=", pi 31 ! CHECK: fir.call @{{.*}}BeginExternalFormattedOutput 32 ! CHECK: fir.call @{{.*}}OutputAscii 33 ! CHECK: fir.call @{{.*}}OutputReal32 34 ! CHECK: fir.call @{{.*}}EndIoStatement 35 if (flag2) write(*, label) "2PI=", 2*pi 36 if (flag1 .and. flag2 .and. flag3) then 37 assign 100 to label 38 else 39 assign 200 to label 40 end if 41 if (flag3) then 42 ! CHECK: fir.call @{{.*}}BeginExternalFormattedOutput 43 ! CHECK: fir.call @{{.*}}OutputAscii 44 ! CHECK: fir.call @{{.*}}OutputReal32 45 ! CHECK: fir.call @{{.*}}EndIoStatement 46 write(*, label) "3PI=", 3*pi 47 endif 48 49100 format (A, F10.3) 50200 format (A,E8.1) 51300 format (A, E4.2) 52 53end subroutine 54 55! CHECK-LABEL: func @_QQmain 56 call formatAssign(.true., .true., .true.) 57 print* 58 call formatAssign(.true., .false., .true.) 59end 60