For
integer(4) :: p(4) = (/2,4,1,3/)
integer(4) :: q(4) = (/2,4,1,3/)
p(q) = (/(i, i = 1, 4)/)
gfortran generates an unneeded temporary, which is only needed for
integer(4) :: p(4) = (/2,4,1,3/)
p(p) = (/(i, i = 1, 4)/)
Cf. PR 33749
--
Summary: Unneeded temporary generated for LHS index of array
assignment
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: enhancement
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: burnus at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33850