[[gnu::noipa]] void do_copy (void *p, const void *q, __SIZE_TYPE__ r) { __builtin_memcpy (p, q, r); } /* Macro to test whether (on targets where psABI requires it) _BitInt with padding bits have those filled with sign or zero extension. */ #if defined(__s390x__) || defined(__arm__) || defined(__loongarch__) #define BEXTC(x) \ do { \ if ((typeof (x)) -1 < 0) \ { \ _BitInt(sizeof (x) * __CHAR_BIT__) __x; \ do_copy (&__x, &(x), sizeof (__x)); \ if (__x != (x)) \ __builtin_abort (); \ } \ else \ { \ unsigned _BitInt(sizeof (x) * __CHAR_BIT__) __x; \ do_copy (&__x, &(x), sizeof (__x)); \ if (__x != (x)) \ __builtin_abort (); \ } \ } while (0) #else #define BEXTC(x) do { (void) (x); } while (0) #endif