! Copyright 2015-2023 Free Software Foundation, Inc. ! ! This program is free software; you can redistribute it and/or modify ! it under the terms of the GNU General Public License as published by ! the Free Software Foundation; either version 3 of the License, or ! (at your option) any later version. ! ! This program is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! GNU General Public License for more details. ! ! You should have received a copy of the GNU General Public License ! along with this program. If not, see . ! ! Original file written by Jakub Jelinek and ! Jan Kratochvil . ! Modified for the GDB testcases by Keven Boell . subroutine foo (array1, array2) integer :: array1 (:, :) real :: array2 (:, :, :) array1(:,:) = 5 ! not-filled array1(1, 1) = 30 array2(:,:,:) = 6 ! array1-filled array2(:,:,:) = 3 array2(1,1,1) = 30 array2(3,3,3) = 90 ! array2-almost-filled end subroutine subroutine bar (array1, array2) integer :: array1 (*) integer :: array2 (4:9, 10:*) array1(5:10) = 1311 array1(7) = 1 array1(100) = 100 array2(4,10) = array1(7) array2(4,100) = array1(7) return ! end-of-bar end subroutine program vla_sub interface subroutine foo (array1, array2) integer :: array1 (:, :) real :: array2 (:, :, :) end subroutine end interface interface subroutine bar (array1, array2) integer :: array1 (*) integer :: array2 (4:9, 10:*) end subroutine end interface real, allocatable :: vla1 (:, :, :) integer, allocatable :: vla2 (:, :) ! used for subroutine integer :: sub_arr1(42, 42) real :: sub_arr2(42, 42, 42) integer :: sub_arr3(42) sub_arr1(:,:) = 1 ! vla2-deallocated sub_arr2(:,:,:) = 2 sub_arr3(:) = 3 call foo(sub_arr1, sub_arr2) call foo(sub_arr1(5:10, 5:10), sub_arr2(10:15,10:15,10:15)) allocate (vla1 (10,10,10)) allocate (vla2 (20,20)) vla1(:,:,:) = 1311 vla2(:,:) = 42 call foo(vla2, vla1) call bar(sub_arr3, sub_arr1) end program vla_sub