brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.5 KiB · ecf2e2d Raw
146 lines · plain
1! RUN: bbc %s -emit-fir -hlfir=false -o - | FileCheck %s2! UNSUPPORTED: system-windows3 4 logical :: existsvar5 integer :: length6 real :: a(100)7 8  ! CHECK-LABEL: _QQmain9  ! CHECK: call {{.*}}BeginOpenUnit10  ! CHECK-DAG: call {{.*}}SetFile11  ! CHECK-DAG: call {{.*}}SetAccess12  ! CHECK: call {{.*}}EndIoStatement13  open(8, file="foo", access="sequential")14 15  ! CHECK: call {{.*}}BeginBackspace16  ! CHECK: call {{.*}}EndIoStatement17  backspace(8)18 19  ! CHECK: call {{.*}}BeginFlush20  ! CHECK: call {{.*}}EndIoStatement21  flush(8)22 23  ! CHECK: call {{.*}}BeginRewind24  ! CHECK: call {{.*}}EndIoStatement25  rewind(8)26 27  ! CHECK: call {{.*}}BeginEndfile28  ! CHECK: call {{.*}}EndIoStatement29  endfile(8)30 31  ! CHECK: call {{.*}}BeginWaitAll(%{{.*}}, %{{.*}}, %{{.*}})32  ! CHECK: call {{.*}}EndIoStatement33  wait(unit=8)34 35  ! CHECK: call {{.*}}BeginExternalListInput36  ! CHECK: call {{.*}}InputInteger37  ! CHECK: call {{.*}}InputReal3238  ! CHECK: call {{.*}}EndIoStatement39  read (8,*) i, f40 41  ! CHECK: call {{.*}}BeginExternalListOutput42  ! CHECK: call {{.*}}OutputInteger3243  ! CHECK: call {{.*}}OutputReal3244  ! CHECK: call {{.*}}EndIoStatement45  write (8,*) i, f46 47  ! CHECK: call {{.*}}BeginClose48  ! CHECK: call {{.*}}EndIoStatement49  close(8)50 51  ! CHECK: call {{.*}}BeginExternalListOutput52  ! CHECK: call {{.*}}OutputAscii53  ! CHECK: call {{.*}}EndIoStatement54  print *, "A literal string"55 56  ! CHECK: call {{.*}}BeginInquireUnit57  ! CHECK: call {{.*}}EndIoStatement58  inquire(4, EXIST=existsvar)59 60  ! CHECK: call {{.*}}BeginInquireFile61  ! CHECK: call {{.*}}EndIoStatement62  inquire(FILE="fail.f90", EXIST=existsvar)63 64  ! CHECK: call {{.*}}BeginInquireIoLength65  ! CHECK-COUNT-3: call {{.*}}OutputDescriptor66  ! CHECK: call {{.*}}EndIoStatement67  inquire (iolength=length) existsvar, length, a68end69 70! CHECK-LABEL: internalnamelistio71subroutine internalNamelistIO()72  ! CHECK: %[[internal:[0-9]+]] = fir.alloca !fir.char<1,12> {bindc_name = "internal"73  character(12) :: internal74  integer :: x = 12375  namelist /nml/x76  ! CHECK: %[[internal_:[0-9]+]] = fir.convert %[[internal]] : (!fir.ref<!fir.char<1,12>>) -> !fir.ref<i8>77  ! CHECK: %[[cookie:[0-9]+]] = fir.call @_FortranAioBeginInternalListOutput(%[[internal_]]78  ! CHECK: fir.call @_FortranAioOutputNamelist(%[[cookie]]79  ! CHECK: fir.call @_FortranAioEndIoStatement(%[[cookie]]80  write(internal,nml=nml)81end82 83! Tests the 4 basic inquire formats84! CHECK-LABEL: func @_QPinquire_test85subroutine inquire_test(ch, i, b)86  character(80) :: ch87  integer :: i88  logical :: b89  integer :: id_func90 91  ! CHARACTER92  ! CHECK: %[[sugar:.*]] = fir.call {{.*}}BeginInquireUnit93  ! CHECK: call {{.*}}InquireCharacter(%[[sugar]], %c{{.*}}, %{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i64, !fir.ref<i8>, i64) -> i194  ! CHECK: call {{.*}}EndIoStatement95  inquire(88, name=ch)96 97  ! INTEGER98  ! CHECK: %[[oatmeal:.*]] = fir.call {{.*}}BeginInquireUnit99  ! CHECK: call @_FortranAioInquireInteger64(%[[oatmeal]], %c{{.*}}, %{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i64, !fir.ref<i64>, i32) -> i1100  ! CHECK: call {{.*}}EndIoStatement101  inquire(89, pos=i)102 103  ! LOGICAL104  ! CHECK: %[[snicker:.*]] = fir.call {{.*}}BeginInquireUnit105  ! CHECK: call @_FortranAioInquireLogical(%[[snicker]], %c{{.*}}, %[[b:.*]]) {{.*}}: (!fir.ref<i8>, i64, !fir.ref<i1>) -> i1106  ! CHECK: call {{.*}}EndIoStatement107  inquire(90, opened=b)108 109  ! PENDING with ID110  ! CHECK-DAG: %[[chip:.*]] = fir.call {{.*}}BeginInquireUnit111  ! CHECK-DAG: fir.call @_QPid_func112  ! CHECK: call @_FortranAioInquirePendingId(%[[chip]], %{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i32, !fir.ref<i1>) -> i1113  ! CHECK: call {{.*}}EndIoStatement114  inquire(91, id=id_func(), pending=b)115end subroutine inquire_test116 117! CHECK-LABEL: @_QPboz118subroutine boz119  ! CHECK: fir.call @_FortranAioOutputInteger8(%{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i8) -> i1120  ! CHECK: fir.call @_FortranAioOutputInteger16(%{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i16) -> i1121  ! CHECK: fir.call @_FortranAioOutputInteger32(%{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i32) -> i1122  ! CHECK: fir.call @_FortranAioOutputInteger64(%{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i64) -> i1123  ! CHECK: fir.call @_FortranAioOutputInteger128(%{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i128) -> i1124  print '(*(Z3))', 96_1, 96_2, 96_4, 96_8, 96_16125 126  ! CHECK: fir.call @_FortranAioOutputInteger32(%{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i32) -> i1127  ! CHECK: fir.call @_FortranAioOutputInteger64(%{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i64) -> i1128  ! CHECK: fir.call @_FortranAioOutputInteger64(%{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i64) -> i1129  print '(I3,2Z44)', 40, 2**40_8, 2**40_8+1130 131  ! CHECK: fir.call @_FortranAioOutputInteger32(%{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i32) -> i1132  ! CHECK: fir.call @_FortranAioOutputInteger64(%{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i64) -> i1133  ! CHECK: fir.call @_FortranAioOutputInteger64(%{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i64) -> i1134  print '(I3,2I44)', 40, 1099511627776,  1099511627777135 136  ! CHECK: fir.call @_FortranAioOutputInteger32(%{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i32) -> i1137  ! CHECK: fir.call @_FortranAioOutputInteger64(%{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i64) -> i1138  ! CHECK: fir.call @_FortranAioOutputInteger64(%{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i64) -> i1139  print '(I3,2O44)', 40, 2**40_8, 2**40_8+1140 141  ! CHECK: fir.call @_FortranAioOutputInteger32(%{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i32) -> i1142  ! CHECK: fir.call @_FortranAioOutputInteger64(%{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i64) -> i1143  ! CHECK: fir.call @_FortranAioOutputInteger64(%{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<i8>, i64) -> i1144  print '(I3,2B44)', 40, 2**40_8, 2**40_8+1145end146