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