https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113664
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- -fno-strict-overflow turns on -fwrapv-pointer which allows pointers to wrap which means if s was non-null, then `s+1` can be still a null pointer ... And then we go and prop null into dot and s is equal to null at that point. and then we still generate the code for `*s++ = '.';` in ``` if (s == dot) { *s++ = '.'; } ``` But it is `*NULL = '.';` due to that. The warning is very sensitive to the ability to optimization away null pointer checks in this case. Really `fno-strict-overflow` is normally to workaround some "undefinedness" in the code and the code should be improved to be fixed. Using -fwrapv instead also helps because now only signed integer overflows and not also pointers ...