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