__has_builtin
#if __clang__ && defined __has_builtin
#define ECB_CLANG_BUILTIN(x) __has_builtin (x)
#ifdef __has_builtin
#define has(func) __has_builtin(func)
#if __GNUC_PREREQ__(5, 1) || __has_builtin(__builtin_add_overflow)
#if __GNUC_PREREQ__(5, 1) || __has_builtin(__builtin_sub_overflow)
#if __GNUC_PREREQ__(5, 1) || __has_builtin(__builtin_mul_overflow)
#if __has_builtin(__builtin_alloca)
#if __has_builtin(__builtin_popcountg)
#if __has_builtin(__builtin_dynamic_object_size)
#if defined(clang) && __has_builtin(__builtin_readcyclecounter)
#ifndef __has_builtin
#if !__has_builtin(__builtin_is_aligned)
#if !__has_builtin(__builtin_align_up)
#if !__has_builtin(__builtin_align_down)
#if __has_builtin(__sync_swap)
#ifndef __has_builtin
#if !__has_builtin(__builtin_is_aligned)
#if !__has_builtin(__builtin_align_up)
#if !__has_builtin(__builtin_align_down)