The following program gives the wrong value for the UBOUND function on a zero sized array. It looks correct for constant section subscripts, but incorrect for run-time expressions. The related functions, LBOUND, SHAPE, and SIZE are correct.
Dick Hendrickson C:\g_experiments\gfortran>gfortran ja0045.f C:\g_experiments\gfortran>a UBOUND ZDA1= 0 -5 -1 ----------------------------------------------- program try_ja0045 call ja0045(3,-3,7,1,6) end program SUBROUTINE JA0045(nf3,mf3,nf7,nf1,nf6) INTEGER IDA(3) real ZDA1(3:10,4:10,5:10) IDA = UBOUND(ZDA1(3:2, NF3:MF3, NF7+NF1:NF6)) if ( any(ida .ne. (/0,0,0/)) ) print *, 'UBOUND ZDA1=',ida IDA = LBOUND(ZDA1(3:2, NF3:MF3, NF7+NF1:NF6)) if ( any(ida .ne. (/1,1,1/)) ) print *, 'LBOUND =',ida IDA = SHAPE(ZDA1(3:2, NF3:MF3, NF7+NF1:NF6)) if ( any(ida .ne. (/0,0,0/)) ) print *, 'SHAPE =',ida J = SIZE(ZDA1(3:2, NF3:MF3, NF7+NF1:NF6)) if ( j .ne. 0 ) print *, 'SIZE =',j END SUBROUTINE -- Summary: UBOUND incorrect for run-time zero-sized section Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: dick dot hendrickson at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35685