http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57230
--- Comment #5 from Zack Weinberg <zackw at panix dot com> ---
It might be good to include stores to nonzero offsets in the test case, and
stores to bytes that used to be internal NULs, something like
int main(void)
{
char s[] = "abc\0def";
s[1] = (char) strlen(s);
if (strlen(s) != 3) abort();
s[2] = (char) strlen(s);
if (strlen(s) != 3) abort();
s[3] = (char) strlen(s);
if (strlen(s) != 7) abort();
return 0;
}
I dunno how much of this is worth trying to optimize, but I'll also mention
that if the values at a certain offset before and after a store are not known
for certain but are both known to be nonzero, that store doesn't have to
invalidate a cached string length.