130b4421aSValentin Clement! RUN: bbc %s -o - | FileCheck %s
230b4421aSValentin Clement
330b4421aSValentin Clement! CHECK-LABEL: func @_QPi
430b4421aSValentin Clementsubroutine i
530b4421aSValentin Clement  implicit none
630b4421aSValentin Clement  integer :: ctemp(10) = (/1,2,3,4,5,6,7,8,9,22/)
730b4421aSValentin Clement  print *, ctemp(1:10)
830b4421aSValentin Clementend subroutine i
930b4421aSValentin Clement
10*3348c083SValentin Clement! CHECK-LABEL: func @_QPs
11*3348c083SValentin Clementsubroutine s
12*3348c083SValentin Clement  integer, parameter :: LONGreal = 8
13*3348c083SValentin Clement  real (kind = LONGreal), dimension(-1:11) :: x = (/0,0,0,0,0,0,0,0,0,0,0,0,0/)
14*3348c083SValentin Clement  real (kind = LONGreal), dimension(0:12) :: g = (/0,0,0,0,0,0,0,0,0,0,0,0,0/)
15*3348c083SValentin Clement  real (kind = LONGreal) :: gs(13)
16*3348c083SValentin Clement  x(1) = 4.0
17*3348c083SValentin Clement  g(1) = 5.0
18*3348c083SValentin Clement  gs = g(0:12:1) + x(11:(-1):(-1))
19*3348c083SValentin Clement  print *, gs
20*3348c083SValentin Clement  !print *, dot_product(g(0:12:1), x(11:(-1):(-1)))
21*3348c083SValentin Clementend subroutine s
22*3348c083SValentin Clement
2330b4421aSValentin Clement! CHECK-LABEL: func @_QPs2
2430b4421aSValentin Clementsubroutine s2
2530b4421aSValentin Clement  real :: x(10)
2630b4421aSValentin Clement  x = 0.0
2730b4421aSValentin Clement  ! CHECK: fir.call @_FortranAioBeginExternalListOutput
2830b4421aSValentin Clement  print *, x
2930b4421aSValentin Clement  ! CHECK: %[[s:.*]] = fir.slice {{.*}} !fir.slice<1>
3030b4421aSValentin Clement  ! CHECK: %[[p:.*]] = fir.array_coor %{{.*}} [%[[s]]] %
3130b4421aSValentin Clement  ! CHECK: fir.store %{{.*}} to %[[p]] : !fir.ref<f32>
3230b4421aSValentin Clement  x(1:10:3) = 2.0
3330b4421aSValentin Clement  ! CHECK: fir.call @_FortranAioBeginExternalListOutput
3430b4421aSValentin Clement  print *, x
3530b4421aSValentin Clementend subroutine s2
3630b4421aSValentin Clement
3730b4421aSValentin Clement! CHECK-LABEL: func @_QQmain
3830b4421aSValentin Clementprogram main
3930b4421aSValentin Clement  integer :: A(10)
4030b4421aSValentin Clement  A(1) = 1
4130b4421aSValentin Clement  A(2) = 2
4230b4421aSValentin Clement  A(3) = 3
4330b4421aSValentin Clement  print *, A
4430b4421aSValentin Clement  ! CHECK: %[[A:.*]] = fir.address_of(@_QFEa)
4530b4421aSValentin Clement  ! CHECK: %[[shape:.*]] = fir.shape %c10
4630b4421aSValentin Clement  ! CHECK: %[[slice:.*]] = fir.slice %
4730b4421aSValentin Clement  ! CHECK: fir.embox %[[A]](%[[shape]]) [%[[slice]]] :
4830b4421aSValentin Clement  print*, A(1:3:1)
4930b4421aSValentin Clement  call s
5030b4421aSValentin Clement  call i
5130b4421aSValentin Clementend program main
52