The fix for PR40551 made me realise that there are some assignment optimizations that are missed:
integer :: array (3, 3), source (3, 3) array = 0 array(:, 1) = 0 ! could use __builtin_memcpy array(1,:) = 0 source = array ! uses __builtin_memcpy source(:,1) = array (:,2) ! could use __builtin_memcpy source(1,:) = array (2,:) source = reshape ([1,2,3,4,5,6,7,8,9],[3,3]) ! uses __builtin_memcpy array(:,1) = [1,2,3] ! could use __builtin_memcpy end At present, there is only a test that the lhs array is full. Any contiguous reference could take these opportunities too. Some work will be required with the helper functions but this is not a big deal. I'll take it on. Paul -- Summary: Some missed optimizations in array assignment Product: gcc Version: 4.5.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: normal Priority: P3 Component: fortran AssignedTo: pault at gcc dot gnu dot org ReportedBy: pault at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40598