https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82429
--- Comment #2 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- Strictly, that a program declares stpcpy should be irrelevant if the declaration is outside system headers, because it could declare and define it for some other purpose (even if the prototype matches). If declared *in system headers*, stpcpy can be assumed to have POSIX semantics; likewise if __builtin_stpcpy is called by the program (because calling __builtin_stpcpy implies it's OK to generate a call to stpcpy for such a call, so stpcpy can be assumed to have POSIX semantics).