http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57262
Bug ID: 57262 Summary: Optimize bound intrinsics with dim=var for rank one arrays Product: gcc Version: 4.9.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: minor Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: burnus at gcc dot gnu.org I am not really sure whether this really occurs in real-world code, but I realized that for rank=1 arrays, the following can be compile-time simplified. ! { dg-options "-fdump-tree-original" } integer function foo(i) implicit none integer :: i, a(10) foo = lbound (a, dim=i) + 2*ubound(a,dim=i) + 3*size(a,dim=i) end ! { dg-final { scan-tree-dump "__result_bar = 51;" "original" } } ! ! * * * ! ! For the tree version, one could also replace the dim=i by dim=1: integer function bar(jjj,n) implicit none integer :: jjj, n, a(n:) bar = lbound (a, dim=jjj) + 2*ubound(a,dim=jjj) + 3*size(a,dim=jjj) end ! { dg-final { scan-tree-dump-not "jjj" "original" } }