http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56937
--- Comment #4 from Mikael Morin <mikael at gcc dot gnu.org> 2013-04-13 10:26:05 UTC --- The following variant is valid, and gives 1.0 as expected. But it doesn't avoid the temporary either. real :: r(4), p(4) integer :: idx(4) p = [0.25, 0.25, 0.25, 0.25] idx = [4,2,3,1] r = 0 r(idx) = r(idx) + p print *, sum(r) end