This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug fortran/68020] New: Issue with implied-shape array parameter of rank > 2


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

...


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]