https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69759
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- It is documented, just not the way you think it is: See https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html: Outside strict ISO C mode (-ansi, -std=c90, -std=c99 or -std=c11), the functions _exit, +++alloca+++, bcmp, bzero, dcgettext, dgettext, dremf, dreml, drem, exp10f, exp10l, exp10, ffsll, ffsl, ffs, fprintf_unlocked, fputs_unlocked, gammaf, gammal, gamma, gammaf_r, gammal_r, gamma_r, gettext, index, isascii, j0f, j0l, j0, j1f, j1l, j1, jnf, jnl, jn, lgammaf_r, lgammal_r, lgamma_r, mempcpy, pow10f, pow10l, pow10, printf_unlocked, rindex, scalbf, scalbl, scalb, signbit, signbitf, signbitl, signbitd32, signbitd64, signbitd128, significandf, significandl, significand, sincosf, sincosl, sincos, stpcpy, stpncpy, strcasecmp, strdup, strfmon, strncasecmp, strndup, toascii, y0f, y0l, y0, y1f, y1l, y1, ynf, ynl and yn may be handled as built-in functions. All these functions have corresponding versions prefixed with __builtin_, which may be used even in strict C90 mode. +++ added to show it is there.