brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · deb3a5b Raw
68 lines · plain
1! RUN: bbc -hlfir=false -o - %s | FileCheck %s2 3! CHECK-LABEL: func @_QPs14SUBROUTINE s15  INTEGER i6  REAL r7  ! CHECK: = fir.alloca !fir.array<4xi8> {uniq_name = "_QFs1Ei"}8  EQUIVALENCE (r,i)9  ! CHECK: %[[coor:.*]] = fir.coordinate_of %{{.*}}, %{{.*}} : (!fir.ref<!fir.array<4xi8>>, index) -> !fir.ref<i8>10  ! CHECK: %[[iloc:.*]] = fir.convert %[[coor]] : (!fir.ref<i8>) -> !fir.ptr<i32>11  ! CHECK-DAG: fir.store %{{.*}} to %[[iloc]] : !fir.ptr<i32>12  i = 413  ! CHECK-DAG: %[[floc:.*]] = fir.convert %[[coor]] : (!fir.ref<i8>) -> !fir.ptr<f32>14  ! CHECK: %[[ld:.*]] = fir.load %[[floc]] : !fir.ptr<f32>15  PRINT *, r16END SUBROUTINE s117 18! CHECK-LABEL: func @_QPs219SUBROUTINE s220  INTEGER i(10)21  REAL r(10)22  ! CHECK: %[[arr:.*]] = fir.alloca !fir.array<48xi8>23  EQUIVALENCE (r(3),i(5))24  ! CHECK: %[[iarr:.*]] = fir.convert %{{.*}} : (!fir.ref<i8>) -> !fir.ptr<!fir.array<10xi32>>25  ! CHECK: %[[foff:.*]] = fir.coordinate_of %[[arr]], %{{.*}} : (!fir.ref<!fir.array<48xi8>>, index) -> !fir.ref<i8>26  ! CHECK: %[[farr:.*]] = fir.convert %[[foff]] : (!fir.ref<i8>) -> !fir.ptr<!fir.array<10xf32>>27  ! CHECK: %[[ia:.*]] = fir.coordinate_of %[[iarr]], %{{.*}} : (!fir.ptr<!fir.array<10xi32>>, i64) -> !fir.ref<i32>28  ! CHECK: fir.store %{{.*}} to %[[ia]] : !fir.ref<i32>29  i(5) = 1830  ! CHECK: %[[fld:.*]] = fir.coordinate_of %[[farr]], %{{.*}} : (!fir.ptr<!fir.array<10xf32>>, i64) -> !fir.ref<f32>31  ! CHECK: = fir.load %[[fld]] : !fir.ref<f32>32  PRINT *, r(3)33END SUBROUTINE s234 35! CHECK-LABEL: func @_QPs336SUBROUTINE s337  REAL r(10)38  TYPE t39    SEQUENCE40    REAL r(10)41  END TYPE t42  TYPE(t) x43  ! CHECK: %[[group:.*]] = fir.alloca !fir.array<40xi8>44  EQUIVALENCE (r,x)45  ! CHECK: %[[coor:.*]] = fir.coordinate_of %[[group]], %c0 : (!fir.ref<!fir.array<40xi8>>, index) -> !fir.ref<i8>46  ! CHECK: %[[rloc:.*]] = fir.convert %[[coor]] : (!fir.ref<i8>) -> !fir.ptr<!fir.array<10xf32>>47  ! CHECK: %[[xloc:.*]] = fir.convert %[[coor]] : (!fir.ref<i8>) -> !fir.ptr<!fir.type<_QFs3Tt{r:!fir.array<10xf32>}>>48  ! CHECK: %[[xrloc:.*]] = fir.coordinate_of %[[xloc]], r49  ! CHECK: %[[v1loc:.*]] = fir.coordinate_of %[[xrloc]], %c8_i64 : (!fir.ref<!fir.array<10xf32>>, i64) -> !fir.ref<f32>50  ! CHECK: fir.store %{{.*}} to %[[v1loc]] : !fir.ref<f32>51  x%r(9) = 9.052  ! CHECK: %[[v2loc:.*]] = fir.coordinate_of %[[rloc]], %c8_i64 : (!fir.ptr<!fir.array<10xf32>>, i64) -> !fir.ref<f32>53  ! CHECK: %{{.*}} = fir.load %[[v2loc]] : !fir.ref<f32>54  PRINT *, r(9)55END SUBROUTINE s356 57! test that equivalence in main program containing arrays are placed in global memory.58! CHECK: fir.global internal @_QFEa : !fir.array<400000000xi8>59  integer :: a, b(100000000)60  equivalence (a, b)61  b(1) = 4262  print *, a63 64  CALL s165  CALL s266  CALL s367END68