https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108131
Bug ID: 108131
Summary: Incorrect bound calculation when bound intrinsic used
in size expression
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: jb at gcc dot gnu.org
Target Milestone: ---
This is from
https://stackoverflow.com/questions/74814027/where-to-report-possible-gfortran-compiler-bug
. Consider
program test
integer, parameter :: mg(0:10) = 0
integer, parameter :: u = ubound(mg, dim=1)
integer, parameter :: cx(-1:ubound(mg, dim=1)) = 1
integer, parameter :: cy(-1:10) = 2
integer, parameter :: cz(-1:u) = 3
write(*,*) lbound(mg, dim=1), ubound(mg, dim=1)
write(*,*) lbound(cx, dim=1), ubound(cx, dim=1)
write(*,*) lbound(cy, dim=1), ubound(cy, dim=1)
write(*,*) lbound(cz, dim=1), ubound(cz, dim=1)
end program test
Obviously the ubounds of all the 4 arrays should be 10. However running the
program results in:
$ ./a.out
0 10
-1 11
-1 10
-1 10
This affects master as of today, an earlier 12.x snapshot I had lying around,
and 11.3.0 as shipped with Ubuntu 22.04. Based on a comment on the
stackoverflow question, versions 7, 8, 9, and 10 are ok. Looking at
-fdump-tree-original output, the error occurs already in the gfortran frontend.