brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · 5f7d641 Raw
98 lines · plain
1! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s2 3! CHECK-LABEL: func @_QPrandom_test_14subroutine random_test_15  ! CHECK-DAG: [[ss:%[0-9]+]] = fir.alloca {{.*}}random_test_1Ess6  ! CHECK-DAG: [[vv:%[0-9]+]] = fir.alloca {{.*}}random_test_1Evv7  integer ss, vv(40)8  ! CHECK-DAG: [[rr:%[0-9]+]] = fir.alloca {{.*}}random_test_1Err9  ! CHECK-DAG: [[aa:%[0-9]+]] = fir.alloca {{.*}}random_test_1Eaa10  real rr, aa(5)11  ! CHECK: fir.call @_FortranARandomInit(%true{{.*}}, %false{{.*}}) {{.*}}: (i1, i1) -> ()12  call random_init(.true., .false.)13  ! CHECK: [[box:%[0-9]+]] = fir.embox [[ss]]14  ! CHECK: [[argbox:%[0-9]+]] = fir.convert [[box]]15  ! CHECK: fir.call @_FortranARandomSeedSize([[argbox]]16  call random_seed(size=ss)17  print*, 'size: ', ss18  ! CHECK: fir.call @_FortranARandomSeedDefaultPut() {{.*}}: () -> ()19  call random_seed()20  ! CHECK: [[box:%[0-9]+]] = fir.embox [[rr]]21  ! CHECK: [[argbox:%[0-9]+]] = fir.convert [[box]]22  ! CHECK: fir.call @_FortranARandomNumber([[argbox]]23  call random_number(rr)24  print*, rr25  ! CHECK: [[box:%[0-9]+]] = fir.embox [[vv]]26  ! CHECK: [[argbox:%[0-9]+]] = fir.convert [[box]]27  ! CHECK: fir.call @_FortranARandomSeedGet([[argbox]]28  call random_seed(get=vv)29! print*, 'get:  ', vv(1:ss)30  ! CHECK: [[box:%[0-9]+]] = fir.embox [[vv]]31  ! CHECK: [[argbox:%[0-9]+]] = fir.convert [[box]]32  ! CHECK: fir.call @_FortranARandomSeedPut([[argbox]]33  call random_seed(put=vv)34  print*, 'put:  ', vv(1:ss)35  ! CHECK: [[box:%[0-9]+]] = fir.embox [[aa]]36  ! CHECK: [[argbox:%[0-9]+]] = fir.convert [[box]]37  ! CHECK: fir.call @_FortranARandomNumber([[argbox]]38  call random_number(aa)39  print*, aa40end41 42! CHECK-LABEL: func @_QPrandom_test_243subroutine random_test_244  integer :: size, get(5) = -945  call foo(size)46  call bar(size, get)47contains48  ! CHECK-LABEL: func private @_QFrandom_test_2Pfoo49  subroutine foo(size, put, get)50    ! CHECK: [[s1:%[0-9]+]] = fir.is_present %arg051    ! CHECK: [[s2:%[0-9]+]] = fir.embox %arg052    ! CHECK: [[s3:%[0-9]+]] = fir.absent !fir.box<i32>53    ! CHECK: [[s4:%[0-9]+]] = arith.select [[s1]], [[s2]], [[s3]] : !fir.box<i32>54    integer, optional :: size55    ! CHECK: [[p1:%[0-9]+]] = fir.is_present %arg156    ! CHECK: [[p2:%[0-9]+]] = fir.embox %arg157    ! CHECK: [[p3:%[0-9]+]] = fir.absent !fir.box<!fir.array<5xi32>>58    ! CHECK: [[p4:%[0-9]+]] = arith.select [[p1]], [[p2]], [[p3]] : !fir.box<!fir.array<5xi32>>59    integer, optional :: put(5)60    ! CHECK: [[g1:%[0-9]+]] = fir.is_present %arg261    ! CHECK: [[g2:%[0-9]+]] = fir.embox %arg262    ! CHECK: [[g3:%[0-9]+]] = fir.absent !fir.box<!fir.array<5xi32>>63    ! CHECK: [[g4:%[0-9]+]] = arith.select [[g1]], [[g2]], [[g3]] : !fir.box<!fir.array<5xi32>>64    integer, optional :: get(5)65    ! CHECK: [[s5:%[0-9]+]] = fir.convert [[s4]] : (!fir.box<i32>) -> !fir.box<none>66    ! CHECK: [[p5:%[0-9]+]] = fir.convert [[p4]] : (!fir.box<!fir.array<5xi32>>) -> !fir.box<none>67    ! CHECK: [[g5:%[0-9]+]] = fir.convert [[g4]] : (!fir.box<!fir.array<5xi32>>) -> !fir.box<none>68    ! CHECK: fir.call @_FortranARandomSeed([[s5]], [[p5]], [[g5]]69    call random_seed(size, put, get)70    print*, size71  end subroutine72 73  ! CHECK-LABEL: func private @_QFrandom_test_2Pbar74  subroutine bar(size, get, put)75    integer, optional :: size76    ! CHECK: [[p1:%[0-9]+]] = fir.is_present %arg277    ! CHECK: [[p2:%[0-9]+]] = fir.embox %arg278    ! CHECK: [[p3:%[0-9]+]] = fir.absent !fir.box<!fir.array<5xi32>>79    ! CHECK: [[p4:%[0-9]+]] = arith.select [[p1]], [[p2]], [[p3]] : !fir.box<!fir.array<5xi32>>80    integer, optional :: put(5)81    ! CHECK: [[g1:%[0-9]+]] = fir.is_present %arg182    ! CHECK: [[g2:%[0-9]+]] = fir.embox %arg183    ! CHECK: [[g3:%[0-9]+]] = fir.absent !fir.box<!fir.array<5xi32>>84    ! CHECK: [[g4:%[0-9]+]] = arith.select [[g1]], [[g2]], [[g3]] : !fir.box<!fir.array<5xi32>>85    integer, optional :: get(5)86    ! CHECK: [[s1:%[0-9]+]] = fir.absent !fir.box<none>87    ! CHECK: [[p5:%[0-9]+]] = fir.convert [[p4]] : (!fir.box<!fir.array<5xi32>>) -> !fir.box<none>88    ! CHECK: [[g5:%[0-9]+]] = fir.convert [[g4]] : (!fir.box<!fir.array<5xi32>>) -> !fir.box<none>89    ! CHECK: fir.call @_FortranARandomSeed([[s1]], [[p5]], [[g5]]90    call random_seed(put=put, get=get)91    print*, get(1:size+1) ! "extra" value should be -992  end subroutine93end94 95  call random_test_196  call random_test_297end98