http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47065
--- Comment #3 from Thomas Koenig <tkoenig at gcc dot gnu.org> 2010-12-31 11:38:03 UTC --- The most common cases are handled now. Still to do: - Handle substring references, for example trim(a(3:5)). Here, we have to watch out for trim(a(function(x):5)), not to evaluate the function twice. - Right now, the optimization is not applied in argument lists. This can be relaxed for PURE functions and subroutines, or if dependency analysis shows that it cannot hurt. The latter point is probably not worth it.