(builtin_compatibility)=

GCC Compatibility of Builtins

LLVM-libc is written with Clang as the reference compiler but is expected to build under GCC as well. Many headers reach for compiler intrinsics (__builtin_*) for fast paths and for IEEE-754 semantics. Not every __builtin_* exists in every compiler. a large family is Clang-only, and several others were added in specific GCC releases. This page records which builtins the libc code base references today and the minimum GCC basepoint that ships each one.

Builtingcc-5gcc-6gcc-7gcc-8gcc-9gcc-10gcc-11gcc-12gcc-13gcc-14gcc-15gcc-16gcc-17
__builtin_aarch64_get_fpcr{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_aarch64_get_fpsr{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_aarch64_set_fpcr{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_aarch64_set_fpsr{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_aarch64_wsr64{{ check }}{{ check }}{{ check }}
__builtin_abs{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_addc{{ check }}{{ check }}{{ check }}
__builtin_addcb
__builtin_addcl{{ check }}{{ check }}{{ check }}
__builtin_addcll{{ check }}{{ check }}{{ check }}
__builtin_addcs
__builtin_add_overflow{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_addressof{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_align_down
__builtin_align_up
__builtin_alloca{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_amdgcn_ldexp
__builtin_amdgcn_ldexpf
__builtin_amdgcn_s_sendmsg
__builtin_amdgcn_s_sleep
__builtin_amdgcn_workitem_id_x
__builtin_arm_get_fpscr{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_arm_isb
__builtin_arm_set_fpscr{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_arm_wsr64
__builtin_assume
__builtin_assume_aligned{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_bcmp{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_bit_cast{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_bswap16{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_bswap32{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_bswap64{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_ceil{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_ceilf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_clear_padding{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_clz{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_clzg{{ check }}{{ check }}{{ check }}
__builtin_clzl{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_clzll{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_clzs{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_complex{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_convertvector{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_copysign{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_copysignf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_copysignf16{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_ctz{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_ctzg{{ check }}{{ check }}{{ check }}
__builtin_ctzl{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_ctzll{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_ctzs{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_elementwise_abs
__builtin_elementwise_canonicalize
__builtin_elementwise_ceil
__builtin_elementwise_copysign
__builtin_elementwise_floor
__builtin_elementwise_fma
__builtin_elementwise_fmod
__builtin_elementwise_max
__builtin_elementwise_min
__builtin_elementwise_nearbyint
__builtin_elementwise_rint
__builtin_elementwise_round
__builtin_elementwise_roundeven
__builtin_elementwise_sqrt
__builtin_elementwise_trunc
__builtin_expect{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_fabs{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_fabsf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_fabsf16{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_floor{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_floorf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_flt_rounds
__builtin_fma{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_fmaf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_fmax{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_fmaxf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_fmaxf16{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_fmin{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_fminf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_fminf16{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_fmod{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_fmodf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_fpclassify{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_frame_address{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_frexp{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_frexpf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_func
__builtin_huge_val{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_huge_valf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_ia32_ldmxcsr{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_ia32_pause{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_ia32_stmxcsr{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_inff{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_is_aligned
__builtin_is_constant_evaluated{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_isfinite{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_isinf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_isnan{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_isnormal{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_launder{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_ldexp{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_ldexpf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_masked_compress_store
__builtin_masked_expand_load
__builtin_masked_gather
__builtin_masked_load
__builtin_masked_scatter
__builtin_masked_store
__builtin_memcmp{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_memcmp_inline
__builtin_memcpy{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_memcpy_inline
__builtin_memmove{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_memset{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_memset_inline
__builtin_mul_overflow{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_nanf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_nans{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_nansf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_nansl{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_nearbyint{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_nearbyintf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_nondeterministic_value
__builtin_nontemporal_store
__builtin_offsetof{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_popcount{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_popcountg{{ check }}{{ check }}{{ check }}
__builtin_popcountl{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_popcountll{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_prefetch{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_readcyclecounter
__builtin_readsteadycounter
__builtin_reduce_add
__builtin_reduce_and
__builtin_reduce_max
__builtin_reduce_min
__builtin_reduce_mul
__builtin_reduce_or
__builtin_reduce_xor
__builtin_remainder{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_remainderf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_return_address{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_rint{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_rintf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_round{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_roundeven{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_roundevenf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_roundf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_sadd_overflow{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_shufflevector{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_signbit{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_snprintf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_sqrt{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_sqrtf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_strlen{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_subc{{ check }}{{ check }}{{ check }}
__builtin_subcb
__builtin_subcl{{ check }}{{ check }}{{ check }}
__builtin_subcll{{ check }}{{ check }}{{ check }}
__builtin_subcs
__builtin_sub_overflow{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_trap{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_trunc{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_truncf{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_unreachable{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}
__builtin_vectorelements
__has_builtin{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}{{ check }}