http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47674
--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-02-12 19:24:21 UTC --- The file was added for PR 47523. The issue is that there is no temporary generated - but the LHS is dependent on the LHS. This should only occur for "LHS = LHS(substring)" where no temporary is needed for the RHS expression but where a reallocation happens. If no reallocation happens, memmove takes care of possibly overlapping memory. And if there is a more complicated expression on the RHS, a temporary should always be present. Thus, the issue should only occur for a = a(1:2) or a = (((( a(1:2) ))))