1! Copyright 2015-2023 Free Software Foundation, Inc. 2! 3! This program is free software; you can redistribute it and/or modify 4! it under the terms of the GNU General Public License as published by 5! the Free Software Foundation; either version 3 of the License, or 6! (at your option) any later version. 7! 8! This program is distributed in the hope that it will be useful, 9! but WITHOUT ANY WARRANTY; without even the implied warranty of 10! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11! GNU General Public License for more details. 12! 13! You should have received a copy of the GNU General Public License 14! along with this program. If not, see <http://www.gnu.org/licenses/>. 15! 16! Original file written by Jakub Jelinek <jakub@redhat.com> and 17! Jan Kratochvil <jan.kratochvil@redhat.com>. 18! Modified for the GDB testcases by Keven Boell <keven.boell@intel.com>. 19 20subroutine foo (array1, array2) 21 integer :: array1 (:, :) 22 real :: array2 (:, :, :) 23 24 array1(:,:) = 5 ! not-filled 25 array1(1, 1) = 30 26 27 array2(:,:,:) = 6 ! array1-filled 28 array2(:,:,:) = 3 29 array2(1,1,1) = 30 30 array2(3,3,3) = 90 ! array2-almost-filled 31end subroutine 32 33subroutine bar (array1, array2) 34 integer :: array1 (*) 35 integer :: array2 (4:9, 10:*) 36 37 array1(5:10) = 1311 38 array1(7) = 1 39 array1(100) = 100 40 array2(4,10) = array1(7) 41 array2(4,100) = array1(7) 42 return ! end-of-bar 43end subroutine 44 45program vla_sub 46 interface 47 subroutine foo (array1, array2) 48 integer :: array1 (:, :) 49 real :: array2 (:, :, :) 50 end subroutine 51 end interface 52 interface 53 subroutine bar (array1, array2) 54 integer :: array1 (*) 55 integer :: array2 (4:9, 10:*) 56 end subroutine 57 end interface 58 59 real, allocatable :: vla1 (:, :, :) 60 integer, allocatable :: vla2 (:, :) 61 62 ! used for subroutine 63 integer :: sub_arr1(42, 42) 64 real :: sub_arr2(42, 42, 42) 65 integer :: sub_arr3(42) 66 67 sub_arr1(:,:) = 1 ! vla2-deallocated 68 sub_arr2(:,:,:) = 2 69 sub_arr3(:) = 3 70 71 call foo(sub_arr1, sub_arr2) 72 call foo(sub_arr1(5:10, 5:10), sub_arr2(10:15,10:15,10:15)) 73 74 allocate (vla1 (10,10,10)) 75 allocate (vla2 (20,20)) 76 vla1(:,:,:) = 1311 77 vla2(:,:) = 42 78 call foo(vla2, vla1) 79 80 call bar(sub_arr3, sub_arr1) 81end program vla_sub 82