This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/68020] New: Issue with implied-shape array parameter of rank > 2
- From: "gerhard dot steinmetz dot fortran at t-online dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 19 Oct 2015 17:55:21 +0000
- Subject: [Bug fortran/68020] New: Issue with implied-shape array parameter of rank > 2
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68020
Bug ID: 68020
Summary: Issue with implied-shape array parameter of rank > 2
Product: gcc
Version: 5.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: gerhard.steinmetz.fortran@t-online.de
Target Milestone: ---
Based on f2008 (5.3.8.6), an implied-shape array is declared with
an implied-shape-spec-list. This works excellent for rank 1 and 2,
but is rejected for higher ranks.
$ cat z2.f90
program p
integer, parameter :: a(1, 2) = 0
integer, parameter :: x(*, *) = a
integer, parameter :: y(11:*, 12:*) = a
integer :: k
do k = 1, 2
print *, k, lbound(x, dim=k), ubound(x, dim=k)
print *, k, lbound(y, dim=k), ubound(y, dim=k)
end do
end
$ gfortran z2.f90
$ a.out
1 1 1
1 11 11
2 1 2
2 12 13
---
$ cat z3.f90
program p
integer, parameter :: a(1, 2, 3) = 0
integer, parameter :: x(*, *, *) = a
integer, parameter :: y(11:*, 12:*, 13:*) = a
integer :: k
do k = 1, 3
print *, k, lbound(x, dim=k), ubound(x, dim=k)
print *, k, lbound(y, dim=k), ubound(y, dim=k)
end do
end
$ gfortran z3.f90
z3.f90:3:34:
integer, parameter :: x(*, *, *) = a
1
Error: Bad array specification for implied-shape array at (1)
z3.f90:4:43:
integer, parameter :: y(11:*, 12:*, 13:*) = a
1
Error: Bad array specification for implied-shape array at (1)
---
$ cat z4.f90
program p
integer, parameter :: a(1, 2, 3, 4) = 0
integer, parameter :: x(*, *, *, *) = a
integer, parameter :: y(11:*, 12:*, 13:*, 14:*) = a
integer :: k
do k = 1, 4
print *, k, lbound(x, dim=k), ubound(x, dim=k)
print *, k, lbound(y, dim=k), ubound(y, dim=k)
end do
end
...