This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/54208] compilation error for ubound construct in PARAMETER statements
- From: "kargl at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 09 Aug 2012 16:32:07 +0000
- Subject: [Bug fortran/54208] compilation error for ubound construct in PARAMETER statements
- Auto-submitted: auto-generated
- References: <bug-54208-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54208
kargl at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |kargl at gcc dot gnu.org
--- Comment #1 from kargl at gcc dot gnu.org 2012-08-09 16:32:07 UTC ---
(In reply to comment #0)
> The following reproducer:
>
> program testit
> integer, parameter :: n=2
> integer, dimension(1-min(n,2)/2:n) :: arr
> integer, parameter :: i=ubound(arr,1)
> write(6,*) i
> end program testit
>
> fails to compile:
>
> >gfortran testit.F90
> testit.F90:4.33:
>
> integer, parameter :: i=ubound(arr,1)
> 1
> Error: Array 'arr' at (1) is a variable, which does not reduce to a constant
> expression
>
I believe that this may be a duplicate of another bug report,
but don't have time to check. This problem is present in all
versions of gfortran from at least 4.3.6 onward. Oddly, if one
tries 4.2.5, the code compiles. A workaround (and yes I know
changing a large code base may be a PITA) is
program testit
integer, parameter :: n=2, m=1-min(n,2)/2
integer, dimension(m:n) :: arr
integer, parameter :: i=ubound(arr,1)
write(6,*) i
end program testit