https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104308
--- Comment #4 from David Malcolm <dmalcolm at gcc dot gnu.org> --- Yes; using -fdump-ipa-analyzer=stderr shows that the memmove becomes: _1 = &s + 1; _3 = MEM <unsigned short> [(char * {ref-all})_1]; MEM <unsigned short> [(char * {ref-all})&s] = _3; where the first and third stmts in the gimple-ssa IR above have this location: foo.c:2:25: note: 2 | int main() { char s[5]; memmove(s, s + 1, 2); } | ^~~~~~~~~~~~~~~~~~~~ but the middle stmt ("_3 = ...") has unknown location.