The UBOUND function returns zero for subscript triplets that have a negative stride, such as 5:4:-1. Fails with both compile-time expressions and run-time expressions. LBOUND and SHAPE work correctly on the same triplets.
This might be related to 35685 since I think this started soon after 35685 was closed. Dick Hendrickson program try_je0031 ! fails on Windows XP ! gcc version 4.4.0 20081219 (experimental) [trunk revision 142842] (GCC) integer ida(4) real dda(5,5,5,5,5) call JE0031(IDA,DDA,2,5,-2) end SUBROUTINE JE0031(IDA,DDA,nf2,nf5,mf2) INTEGER IDA(4) REAL DLA(:,:,:,:) REAL DDA(5,5,5,5,5) POINTER DLA TARGET DDA DLA => DDA(2:3, 1:3:2, 5:4:-1, NF2, NF5:NF2:MF2) IDA = UBOUND(DLA) if (any(ida /= 2)) print *, ' run-time ubound', ida DLA => DDA(2:3, 1:3:2, 5:4:-1, 2, 5:2:-2) IDA = UBOUND(DLA) if (any(ida /= 2)) print *, 'compile-time ubound', ida !these work DLA => DDA(2:3, 1:3:2, 5:4:-1, 2, 5:2:-2) IDA = shape(DLA) if (any(ida /= 2)) print *, ' compile-time shape', ida DLA => DDA(2:3, 1:3:2, 5:4:-1, 2, 5:2:-2) IDA = LBOUND(DLA) if (any(ida /= 1)) print *, 'compile-time lbound', ida END SUBROUTINE C:\gfortran>gfortran try_je0031.f C:\gfortran>a run-time ubound 2 2 0 0 compile-time ubound 2 2 0 0 -- Summary: UBOUND fails for negative stride triplets 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=38852