1! RUN: bbc -emit-fir -o - %s | FileCheck %s 2! UNSUPPORTED: system-windows 3 4 character*10 :: exx 5 character*30 :: m 6 integer*2 :: s 7 exx = 'AA' 8 m = 'CCCCCC' 9 s = -13 10 ! CHECK: call {{.*}}BeginExternalFormattedInput 11 ! CHECK: call {{.*}}EnableHandlers 12 ! CHECK: call {{.*}}SetAdvance 13 ! CHECK: call {{.*}}InputReal 14 ! CHECK: call {{.*}}GetIoMsg 15 ! CHECK: call {{.*}}EndIoStatement 16 ! CHECK: fir.select %{{.*}} : index [-2, ^bb4, -1, ^bb3, 0, ^bb1, unit, ^bb2] 17 read(*, '(A)', ADVANCE='NO', ERR=10, END=20, EOR=30, IOSTAT=s, IOMSG=m) f 18 ! CHECK-LABEL: ^bb1: 19 exx = 'Zip'; goto 90 2010 exx = 'Err'; goto 90 2120 exx = 'End'; goto 90 2230 exx = 'Eor'; goto 90 2390 print*, exx, c, m, s 24end 25 26! CHECK-LABEL: func @_QPcontrol0 27subroutine control0(n) ! no I/O condition specifier control flow 28dimension c(n), d(n,n), e(n,n), f(n) 29! CHECK-NOT: fir.if 30! CHECK: BeginExternalFormattedInput 31! CHECK-NOT: fir.if 32! CHECK: SetAdvance 33! CHECK-NOT: fir.if 34! CHECK: InputReal32 35! CHECK-NOT: fir.if 36! CHECK: InputReal32 37! CHECK-NOT: fir.if 38! CHECK: fir.do_loop 39! CHECK-NOT: fir.if 40! CHECK: InputReal32 41! CHECK-NOT: fir.if 42! CHECK: fir.do_loop 43! CHECK-NOT: fir.if 44! CHECK: InputReal32 45! CHECK-NOT: fir.if 46! CHECK: InputReal32 47! CHECK-NOT: fir.if 48! CHECK: InputReal32 49! CHECK-NOT: fir.if 50! CHECK: InputReal32 51! CHECK-NOT: fir.if 52! CHECK: EndIoStatement 53! CHECK-NOT: fir.if 54read(*,'(F7.2)', advance='no') a, b, (c(j), (d(k,j), e(k,j), k=1,n), f(j), j=1,n), g 55end 56 57! CHECK-LABEL: func @_QPcontrol1 58subroutine control1(n) ! I/O condition specifier control flow 59! CHECK: BeginExternalFormattedInput 60! CHECK: EnableHandlers 61! CHECK: SetAdvance 62! CHECK: fir.if 63! CHECK: InputReal32 64! CHECK: fir.if 65! CHECK: InputReal32 66! CHECK: fir.if 67! CHECK: fir.iterate_while 68! CHECK: fir.if 69! CHECK: InputReal32 70! CHECK: fir.if 71! CHECK: fir.iterate_while 72! CHECK: fir.if 73! CHECK: InputReal32 74! CHECK: fir.if 75! CHECK: InputReal32 76! CHECK: fir.if 77! CHECK: InputReal32 78! CHECK: fir.if 79! CHECK: InputReal32 80! CHECK: EndIoStatement 81dimension c(n), d(n,n), e(n,n), f(n) 82read(*,'(F7.2)', iostat=mm, advance='no') a, b, (c(j), (d(k,j), e(k,j), k=1,n), f(j), j=1,n), g 83end 84 85! CHECK-LABEL: func @_QPcontrol2 86subroutine control2() ! I/O condition specifier control flow (use index result) 87c = 1; d = 9 88! CHECK: BeginExternalFormattedOutput 89! CHECK: EnableHandlers 90! CHECK: :2 = fir.iterate_while 91! CHECK: = fir.if 92! CHECK: OutputReal 93! CHECK: = fir.if 94! CHECK: OutputReal 95! CHECK: fir.result 96! CHECK: else 97! CHECK: fir.result %false 98! CHECK: fir.result 99! CHECK: else 100! CHECK: fir.result %false 101! CHECK: = arith.addi %arg0, %c1 102! CHECK: = arith.select 103! CHECK: fir.result 104! CHECK: fir.if %{{[0-9]*}}#1 105! CHECK: OutputInteger 106! CHECK: EndIoStatement 107write(*,'(8F4.1,I5)',iostat=m) (c,d,j=11,14), j 108end 109 110! CHECK-LABEL: func @_QPloopnest 111subroutine loopnest 112 integer :: aa(3,3) 113 aa = 10 114 ! CHECK: BeginExternalListOutput 115 ! CHECK: EnableHandlers 116 ! CHECK: {{.*}}:2 = fir.iterate_while ({{.*}} = {{.*}} to {{.*}} step {{.*}}) and ({{.*}} = {{.*}}) -> (index, i1) { 117 ! CHECK: fir.if {{.*}} -> (i1) { 118 ! CHECK: {{.*}}:2 = fir.iterate_while ({{.*}} = {{.*}} to {{.*}} step {{.*}}) and ({{.*}} = {{.*}}) -> (index, i1) { 119 ! CHECK: fir.if {{.*}} -> (i1) { 120 ! CHECK: OutputInteger32 121 ! CHECK: fir.result {{.*}} : i1 122 ! CHECK: } else { 123 ! CHECK: fir.result {{.*}} : i1 124 ! CHECK: } 125 ! CHECK: fir.result {{.*}}, {{.*}} : index, i1 126 ! CHECK: } 127 ! CHECK: fir.result {{.*}}#1 : i1 128 ! CHECK: } else { 129 ! CHECK: fir.result {{.*}} : i1 130 ! CHECK: } 131 ! CHECK: fir.result {{.*}}, {{.*}} : index, i1 132 ! CHECK: } 133 ! CHECK: EndIoStatement 134 write(*,*,err=66) ((aa(j,k)+j+k,j=1,3),k=1,3) 13566 continue 136end 137 138! CHECK-LABEL: func @_QPimpliedformat 139subroutine impliedformat 140 ! CHECK: BeginExternalListInput(%c-1 141 ! CHECK: InputReal32 142 ! CHECK: EndIoStatement(%3) : (!fir.ref<i8>) -> i32 143 read*, x 144 ! CHECK: BeginExternalListOutput(%c-1 145 ! CHECK: OutputReal32 146 ! CHECK: EndIoStatement 147 print*, x 148end 149