xref: /llvm-project/flang/test/Lower/format-statement.f90 (revision 1fd72321a48d76ae884adb132a109817eee981a0)
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