https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86701
Jan Hubicka <hubicka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |hubicka at gcc dot gnu.org --- Comment #5 from Jan Hubicka <hubicka at gcc dot gnu.org> --- I think this is a valid testcase showing that we can't optimize it: #include<string> #include<cstdio> #include<cstring> int main() { std::string str=""; str.push_back (0); printf ("%i %i\n", str.length(), strlen (str.c_str())); return 0; } We could perhaps infer value range of strlen to be str.end()-str.begin()