https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63393
--- Comment #5 from Andreas Schwab <sch...@linux-m68k.org> --- A conforming implementation is always allowed to provide extensions. The difference between hosted and freestanding implementations is in the set of library facilities that are guaranteed to be available, but the full set of identifiers are still reserved even in freestanding implementations. Thus a strictly conforming program cannot define the function memset with external linkage even in freestanding implementations, and a freestanding implementation is allowed to generate a call to memset as it sees fit.