https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82935
--- Comment #4 from Marc Glisse <glisse at gcc dot gnu.org> --- We keep *a1_2(D) = *a2_3(D); and only at expansion time turn it into a call to memcpy, so the gimple pass that detects tail calls doesn't have a chance to notice this case.