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.

Builtin

gcc-5

gcc-6

gcc-7

gcc-8

gcc-9

gcc-10

gcc-11

gcc-12

gcc-13

gcc-14

gcc-15

gcc-16

gcc-17

__builtin_aarch64_get_fpcr

__builtin_aarch64_get_fpsr

__builtin_aarch64_set_fpcr

__builtin_aarch64_set_fpsr

__builtin_aarch64_wsr64

__builtin_abs

__builtin_addc

__builtin_addcb

__builtin_addcl

__builtin_addcll

__builtin_addcs

__builtin_add_overflow

__builtin_addressof

__builtin_align_down

__builtin_align_up

__builtin_alloca

__builtin_amdgcn_ldexp

__builtin_amdgcn_ldexpf

__builtin_amdgcn_s_sendmsg

__builtin_amdgcn_s_sleep

__builtin_amdgcn_workitem_id_x

__builtin_arm_get_fpscr

__builtin_arm_isb

__builtin_arm_set_fpscr

__builtin_arm_wsr64

__builtin_assume

__builtin_assume_aligned

__builtin_bcmp

__builtin_bit_cast

__builtin_bswap16

__builtin_bswap32

__builtin_bswap64

__builtin_ceil

__builtin_ceilf

__builtin_clear_padding

__builtin_clz

__builtin_clzg

__builtin_clzl

__builtin_clzll

__builtin_clzs

__builtin_complex

__builtin_convertvector

__builtin_copysign

__builtin_copysignf

__builtin_copysignf16

__builtin_ctz

__builtin_ctzg

__builtin_ctzl

__builtin_ctzll

__builtin_ctzs

__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

__builtin_fabs

__builtin_fabsf

__builtin_fabsf16

__builtin_floor

__builtin_floorf

__builtin_flt_rounds

__builtin_fma

__builtin_fmaf

__builtin_fmax

__builtin_fmaxf

__builtin_fmaxf16

__builtin_fmin

__builtin_fminf

__builtin_fminf16

__builtin_fmod

__builtin_fmodf

__builtin_fpclassify

__builtin_frame_address

__builtin_frexp

__builtin_frexpf

__builtin_func

__builtin_huge_val

__builtin_huge_valf

__builtin_ia32_ldmxcsr

__builtin_ia32_pause

__builtin_ia32_stmxcsr

__builtin_inff

__builtin_is_aligned

__builtin_is_constant_evaluated

__builtin_isfinite

__builtin_isinf

__builtin_isnan

__builtin_isnormal

__builtin_launder

__builtin_ldexp

__builtin_ldexpf

__builtin_masked_compress_store

__builtin_masked_expand_load

__builtin_masked_gather

__builtin_masked_load

__builtin_masked_scatter

__builtin_masked_store

__builtin_memcmp

__builtin_memcmp_inline

__builtin_memcpy

__builtin_memcpy_inline

__builtin_memmove

__builtin_memset

__builtin_memset_inline

__builtin_mul_overflow

__builtin_nanf

__builtin_nans

__builtin_nansf

__builtin_nansl

__builtin_nearbyint

__builtin_nearbyintf

__builtin_nondeterministic_value

__builtin_nontemporal_store

__builtin_offsetof

__builtin_popcount

__builtin_popcountg

__builtin_popcountl

__builtin_popcountll

__builtin_prefetch

__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

__builtin_remainderf

__builtin_return_address

__builtin_rint

__builtin_rintf

__builtin_round

__builtin_roundeven

__builtin_roundevenf

__builtin_roundf

__builtin_sadd_overflow

__builtin_shufflevector

__builtin_signbit

__builtin_snprintf

__builtin_sqrt

__builtin_sqrtf

__builtin_strlen

__builtin_subc

__builtin_subcb

__builtin_subcl

__builtin_subcll

__builtin_subcs

__builtin_sub_overflow

__builtin_trap

__builtin_trunc

__builtin_truncf

__builtin_unreachable

__builtin_vectorelements

__has_builtin