https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87502
--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> --- __builtin_memcpy (&D.35539.D.25336._M_local_buf, "abc", 3); MEM[(char_type &)&D.35539 + 11] = 0; change to __builtin_memcpy (&D.35539.D.25336._M_local_buf, "abc", 4); seems like something that the strlen pass could do.