As well as built-ins being available from the gcc.builtins
module, GNU D
will also recognize when an extern(C)
library function is a GCC
built-in. Many of these functions are only optimized in certain cases; if they
are not optimized in a particular case, a call to the library function is
emitted. This optimization can be disabled with the -fno-builtin
option (see Runtime Options).
In the core.stdc.complex
module, the functions
cabs
, cabsf
, cabsl
, cacos
, cacosf
,
cacosh
, cacoshf
, cacoshl
, cacosl
, carg
,
cargf
, cargl
, casin
, casinf
, casinh
,
casinhf
, casinhl
, casinl
, catan
, catanf
,
catanh
, catanhf
, catanhl
, catanl
, ccos
,
ccosf
, ccosh
, ccoshf
, ccoshl
, ccosl
,
cexp
, cexpf
, cexpl
, clog
, clogf
,
clogl
, conj
, conjf
, conjl
, cpow
,
cpowf
, cpowl
, cproj
, cprojf
, cprojl
,
csin
, csinf
, csinh
, csinhf
, csinhl
,
csinl
, csqrt
, csqrtf
, csqrtl
, ctan
,
ctanf
, ctanh
, ctanhf
, ctanhl
, ctanl
may be handled as built-in functions. All these functions have corresponding
versions prefixed with __builtin_
in the gcc.builtins
module.
In the core.stdc.ctype
module, the functions
isalnum
, isalpha
, isblank
, iscntrl
, isdigit
,
isgraph
, islower
, isprint
, ispunct
, isspace
,
isupper
, isxdigit
, tolower
, toupper
may be handled as built-in functions. All these functions have corresponding
versions prefixed with __builtin_
in the gcc.builtins
module.
In the core.stdc.fenv
module, the functions
feclearexcept
, fegetenv
, fegetexceptflag
,
fegetround
, feholdexcept
, feraiseexcept
, fesetenv
,
fesetexceptflag
, fesetround
, fetestexcept
,
feupdateenv
may be handled as built-in functions. All these functions have corresponding
versions prefixed with __builtin_
in the gcc.builtins
module.
In the core.stdc.inttypes
module, the function imaxabs
may be
handled as a built-in function. All these functions have corresponding
versions prefixed with __builtin_
in the gcc.builtins
module.
In the core.stdc.math
module, the functions
acos
, acosf
, acosh
, acoshf
, acoshl
,
acosl
, asin
, asinf
, asinh
, asinhf
,
asinhl
, asinl
, atan
, atan2
, atan2f
,
atan2l
, atanf
, atanh
, atanhf
, atanhl
,
atanl
, cbrt
, cbrtf
, cbrtl
, ceil
,
ceilf
, ceill
, copysign
, copysignf
,
copysignl
, cos
, cosf
, cosh
, coshf
,
coshl
, cosl
, erf
, erfc
, erfcf
, erfcl
,
erff
, erfl
, exp
, exp2
, exp2f
, exp2l
,
expf
, expl
, expm1
, expm1f
, expm1l
,
fabs
, fabsf
, fabsl
, fdim
, fdimf
,
fdiml
, floor
, floorf
, floorl
, fma
,
fmaf
, fmal
, fmax
, fmaxf
, fmaxl
, fmin
,
fminf
, fminl
, fmod
, fmodf
, fmodl
,
frexp
, frexpf
, frexpl
, hypot
, hypotf
,
hypotl
, ilogb
, ilogbf
, ilogbl
, isinf
,
isnan
, ldexp
, ldexpf
, ldexpl
, lgamma
,
lgammaf
, lgammal
, llrint
, llrintf
, llrintl
,
llround
, llroundf
, llroundl
, log
, log10
,
log10f
, log10l
, log1p
, log1pf
, log1pl
,
log2
, log2f
, log2l
, logb
, logbf
,
logbl
, logf
, logl
, lrint
, lrintf
,
lrintl
, lround
, lroundf
, lroundl
, modf
,
modff
, modfl
, nan
, nanf
, nanl
,
nearbyint
, nearbyintf
, nearbyintl
, nextafter
,
nextafterf
, nextafterl
, nexttoward
, nexttowardf
,
nexttowardl
, pow
, powf
, powl
, remainder
,
remainderf
, remainderl
, remquo
, remquof
,
remquol
, rint
, rintf
, rintl
, round
,
roundf
, roundl
, scalbln
, scalblnf
, scalblnl
,
scalbn
, scalbnf
, scalbnl
, signbit
, sin
,
sinf
, sinh
, sinhf
, sinhl
, sinl
, sqrt
,
sqrtf
, sqrtl
, tan
, tanf
, tanh
, tanhf
,
tanhl
, tanl
, tgamma
, tgammaf
, tgammal
,
trunc
, truncf
, truncl
may be handled as built-in functions. All these functions have corresponding
versions prefixed with __builtin_
in the gcc.builtins
module.
In the core.stdc.stdio
module, the functions
fprintf
, fputc
, fputc_unlocked
, fputs
,
fwrite
, printf
, puts
, snprintf
, sprintf
,
vfprintf
, vprintf
, vsnprintf
, vsprintf
may be handled as built-in functions. All these functions have corresponding
versions prefixed with __builtin_
in the gcc.builtins
module.
In the core.stdc.stdlib
module, the functions
abort
, abs
, aligned_alloc
, alloca
, calloc
,
exit
, _Exit
, free
, labs
, llabs
,
malloc
, realloc
may be handled as built-in functions. All these functions have corresponding
versions prefixed with __builtin_
in the gcc.builtins
module.
In the core.stdc.string
module, the functions
memchr
, memcmp
, memcpy
, memmove
, memset
,
strcat
, strchr
, strcmp
, strcpy
, strcspn
,
strdup
, strlen
, strncat
, strncmp
, strncpy
,
strpbrk
, strrchr
, strspn
, strstr
may be handled as built-in functions. All these functions have corresponding
versions prefixed with __builtin_
in the gcc.builtins
module.
In the core.stdc.time
module, the function strftime
may be
handled as a built-in function. All these functions have corresponding
versions prefixed with __builtin_
in the gcc.builtins
module.
In the core.stdc.wctype
module, the functions
iswalnum
, iswalpha
, iswblank
, iswcntrl
,
iswdigit
, iswgraph
, iswlower
, iswprint
,
iswpunct
, iswspace
, iswupper
, iswxdigit
,
towlower
, towupper
may be handled as built-in functions. All these functions have corresponding
versions prefixed with __builtin_
in the gcc.builtins
module.
Within the core.sys
package for POSIX and platform definitions, the
functions
putchar_unlocked
, putc_unlocked
, posix_memalign
,
ffs
, strcasecmp
, strncasecmp
, stpcpy
,
stpncpy
, strndup
, strnlen
, execl
, execle
,
execlp
, execv
, execve
, execvp
, _exit
,
fork
may be handled as built-in functions. All these functions have corresponding
versions prefixed with __builtin_
in the gcc.builtins
module.