brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.8 KiB · dcf7387 Raw
171 lines · plain
1! RUN: bbc -emit-fir -hlfir=false -o - %s | FileCheck %s2! UNSUPPORTED: system-windows3 4   character*10 :: exx5   character*30 :: m6   integer*2 :: s7   exx = 'AA'8   m = 'CCCCCC'9   s = -1310   ! CHECK: call {{.*}}BeginExternalFormattedInput11   ! CHECK: call {{.*}}EnableHandlers12   ! CHECK: call {{.*}}SetAdvance13   ! CHECK: call {{.*}}InputReal14   ! CHECK: call {{.*}}GetIoMsg15   ! CHECK: call {{.*}}EndIoStatement16   ! 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) f18   ! CHECK-LABEL: ^bb1:19   exx = 'Zip'; goto 902010 exx = 'Err'; goto 902120 exx = 'End'; goto 902230 exx = 'Eor'; goto 902390 print*, exx, c, m, s24end25 26! CHECK-LABEL: func @_QPcontrol027subroutine control0(n) ! no I/O condition specifier control flow28dimension c(n), d(n,n), e(n,n), f(n)29! CHECK-NOT: fir.if30! CHECK: BeginExternalFormattedInput31! CHECK-NOT: fir.if32! CHECK: SetAdvance33! CHECK-NOT: fir.if34! CHECK: InputReal3235! CHECK-NOT: fir.if36! CHECK: InputReal3237! CHECK-NOT: fir.if38! CHECK: fir.do_loop39! CHECK-NOT: fir.if40! CHECK: InputReal3241! CHECK-NOT: fir.if42! CHECK: fir.do_loop43! CHECK-NOT: fir.if44! CHECK: InputReal3245! CHECK-NOT: fir.if46! CHECK: InputReal3247! CHECK-NOT: fir.if48! CHECK: InputReal3249! CHECK-NOT: fir.if50! CHECK: InputReal3251! CHECK-NOT: fir.if52! CHECK: EndIoStatement53! CHECK-NOT: fir.if54read(*,'(F7.2)', advance='no') a, b, (c(j), (d(k,j), e(k,j), k=1,n), f(j), j=1,n), g55end56 57! CHECK-LABEL: func @_QPcontrol158subroutine control1(n) ! I/O condition specifier control flow59! CHECK: BeginExternalFormattedInput60! CHECK: EnableHandlers61! CHECK: SetAdvance62! CHECK: fir.if63! CHECK: InputReal3264! CHECK: fir.if65! CHECK: InputReal3266! CHECK: fir.if67! CHECK: fir.iterate_while68! CHECK: fir.if69! CHECK: InputReal3270! CHECK: fir.if71! CHECK: fir.iterate_while72! CHECK: fir.if73! CHECK: InputReal3274! CHECK: fir.if75! CHECK: InputReal3276! CHECK: fir.if77! CHECK: InputReal3278! CHECK: fir.if79! CHECK: InputReal3280! CHECK: EndIoStatement81dimension 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), g83end84 85! CHECK-LABEL: func @_QPcontrol286subroutine control2() ! I/O condition specifier control flow (use index result)87c = 1; d = 988! CHECK: BeginExternalFormattedOutput89! CHECK: EnableHandlers90! CHECK: :2 = fir.iterate_while91! CHECK: = fir.if92! CHECK: OutputReal93! CHECK: = fir.if94! CHECK: OutputReal95! CHECK: fir.result96! CHECK: else97! CHECK: fir.result %false98! CHECK: fir.result99! CHECK: else100! CHECK: fir.result %false101! CHECK: = arith.addi %arg0, %c1102! CHECK: = arith.select103! CHECK: fir.result104! CHECK: fir.if %{{[0-9]*}}#1105! CHECK: OutputInteger106! CHECK: EndIoStatement107write(*,'(8F4.1,I5)',iostat=m) (c,d,j=11,14), j108end109 110! CHECK-LABEL: func @_QPcontrol3111subroutine control3 ! I/O condition specifier control flow112    character(10) :: internal(2) = ['aaa','bbb']113    integer stat, k(3)114    ! CHECK:   BeginInternalArrayListInput115    ! CHECK:   EnableHandlers116    ! CHECK:   InputDescriptor117    ! CHECK:   %[[V_15:[0-9]+]] = fir.call @_FortranAioEndIoStatement118    ! CHECK:   %[[V_16:[0-9]+]] = fir.convert %[[V_15]] : (i32) -> index119    ! CHECK:   fir.select %[[V_16]] : index [-2, ^bb1, -1, ^bb1, 0, ^bb1, unit, ^bb2]120    read(internal,*,err=666,iostat=stat) k ! set stat to IOSTAT_END (-1)121    ! CHECK: ^bb1:  // 3 preds: ^bb0, ^bb0, ^bb0122    ! CHECK:   StopStatementText123    ! CHECK:   fir.unreachable124    stop 'fallthrough -> ok'125    ! CHECK: ^bb2:  // pred: ^bb0126    ! CHECK:   BeginExternalListOutput127    ! CHECK:   OutputAscii128    ! CHECK:   EndIoStatement129666 print*, 'FAIL'130    end131 132! CHECK-LABEL: func @_QPloopnest133subroutine loopnest134   integer :: aa(3,3)135   aa = 10136   ! CHECK: BeginExternalListOutput137   ! CHECK: EnableHandlers138   ! CHECK: {{.*}}:2 = fir.iterate_while ({{.*}} = {{.*}} to {{.*}} step {{.*}}) and ({{.*}} = {{.*}}) -> (index, i1) {139   ! CHECK:   fir.if {{.*}} -> (i1) {140   ! CHECK:     {{.*}}:2 = fir.iterate_while ({{.*}} = {{.*}} to {{.*}} step {{.*}}) and ({{.*}} = {{.*}}) -> (index, i1) {141   ! CHECK:       fir.if {{.*}} -> (i1) {142   ! CHECK:         OutputInteger32143   ! CHECK:         fir.result {{.*}} : i1144   ! CHECK:       } else {145   ! CHECK:         fir.result {{.*}} : i1146   ! CHECK:       }147   ! CHECK:       fir.result {{.*}}, {{.*}} : index, i1148   ! CHECK:     }149   ! CHECK:     fir.result {{.*}}#1 : i1150   ! CHECK:   } else {151   ! CHECK:     fir.result {{.*}} : i1152   ! CHECK:   }153   ! CHECK:   fir.result {{.*}}, {{.*}} : index, i1154   ! CHECK: }155   ! CHECK: EndIoStatement156   write(*,*,err=66) ((aa(j,k)+j+k,j=1,3),k=1,3)15766 continue158end159 160! CHECK-LABEL: func @_QPimpliedformat161subroutine impliedformat162  ! CHECK: BeginExternalListInput163  ! CHECK: InputReal32164  ! CHECK: EndIoStatement(%3) {{.*}}: (!fir.ref<i8>) -> i32165  read*, x166  ! CHECK: BeginExternalListOutput167  ! CHECK: OutputReal32168  ! CHECK: EndIoStatement169  print*, x170end171