http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57230
--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Seems like there's some wrongdoing in handle_char_store; we have else if (si != NULL) { si = unshare_strinfo (si); si->length = build_int_cst (size_type_node, 0); so that's where the 0 comes from.