The error attribute appeared in gcc-4.3 The return type of __builtin_constant_p is int
Found by Tinderbox. Signed-off-by: Jeremy Huddleston <jerem...@apple.com> --- include/misc.h | 15 ++++++++++----- 1 files changed, 10 insertions(+), 5 deletions(-) diff --git a/include/misc.h b/include/misc.h index 1fea73e..0dfffec 100644 --- a/include/misc.h +++ b/include/misc.h @@ -261,18 +261,23 @@ version_compare(uint16_t a_major, uint16_t a_minor, #define SwapRestL(stuff) \ SwapLongs((CARD32 *)(stuff + 1), LengthRestL(stuff)) -#ifdef __GNUC__ +#if defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) void __attribute__((error("wrong sized variable passed to swap"))) wrong_size(void); #else static inline void wrong_size(void) { } +#endif -static inline void __builtin_constant_p(int x) +static inline int constant_p(int x) { +/* Does this need versioned guards? */ +#ifdef __GNUC__ + return __builtin_constant_p(x); +#else return 0; -} #endif +} /* byte swap a 32-bit value */ static inline void swap_uint32(uint32_t *x) @@ -288,7 +293,7 @@ static inline void swap_uint32(uint32_t *x) #define swapl(x) do { \ if (sizeof(*(x)) != 4) \ wrong_size(); \ - if (__builtin_constant_p((uintptr_t)(x) & 3) && ((uintptr_t)(x) & 3) == 0) \ + if (constant_p((uintptr_t)(x) & 3) && ((uintptr_t)(x) & 3) == 0) \ *(x) = lswapl(*(x)); \ else \ swap_uint32((uint32_t *)(x)); \ @@ -305,7 +310,7 @@ static inline void swap_uint16(uint16_t *x) #define swaps(x) do { \ if (sizeof(*(x)) != 2) \ wrong_size(); \ - if (__builtin_constant_p((uintptr_t)(x) & 1) && ((uintptr_t)(x) & 1) == 0) \ + if (constant_p((uintptr_t)(x) & 1) && ((uintptr_t)(x) & 1) == 0) \ *(x) = lswaps(*(x)); \ else \ swap_uint16((uint16_t *)(x)); \ -- 1.7.6.1 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel