66 lines · plain
1! RUN: bbc %s -o - | FileCheck %s2 3! CHECK-LABEL: func @_QPformatassign4subroutine formatAssign(flag1, flag2, flag3)5 real :: pi6 integer :: label7 logical :: flag1, flag2, flag38 9 ! CHECK-DAG: %[[ONE:.*]] = arith.constant 100 : i3210 ! CHECK-DAG: %[[TWO:.*]] = arith.constant 200 : i3211 if (flag1) then12 assign 100 to label13 else14 assign 200 to label15 end if16 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 @{{.*}}ReportFatalUserError26 ! CHECK: fir.unreachable27 ! CHECK: fir.call @{{.*}}BeginExternalFormattedOutput28 ! CHECK: fir.call @{{.*}}OutputAscii29 ! CHECK: fir.call @{{.*}}OutputReal3230 ! CHECK: fir.call @{{.*}}EndIoStatement31 pi = 3.14159265358932 write(*, label) " PI=", pi33 ! CHECK: fir.call @{{.*}}ReportFatalUserError34 ! CHECK: fir.unreachable35 ! CHECK: fir.call @{{.*}}BeginExternalFormattedOutput36 ! CHECK: fir.call @{{.*}}OutputAscii37 ! CHECK: fir.call @{{.*}}OutputReal3238 ! CHECK: fir.call @{{.*}}EndIoStatement39 if (flag2) write(*, label) "2PI=", 2*pi40 if (flag1 .and. flag2 .and. flag3) then41 assign 100 to label42 else43 assign 200 to label44 end if45 if (flag3) then46 ! CHECK: fir.call @{{.*}}ReportFatalUserError47 ! CHECK: fir.unreachable48 ! CHECK: fir.call @{{.*}}BeginExternalFormattedOutput49 ! CHECK: fir.call @{{.*}}OutputAscii50 ! CHECK: fir.call @{{.*}}OutputReal3251 ! CHECK: fir.call @{{.*}}EndIoStatement52 write(*, label) "3PI=", 3*pi53 endif54 55100 format (A, F10.3)56200 format (A,E8.1)57300 format (A, E4.2)58 59end subroutine60 61! CHECK-LABEL: func @_QQmain62 call formatAssign(.true., .true., .true.)63 print*64 call formatAssign(.true., .false., .true.)65end66