[PATCH v2] Address regressions from e8ff555b95baab66cc7d060c1e7f9fdd49d3802f

Jeremy Huddleston jeremyhu at apple.com
Thu Sep 22 19:58:43 PDT 2011


On Sep 22, 2011, at 19:49, Alan Coopersmith wrote:

> On 09/22/11 07:11 PM, Jeremy Huddleston wrote:
>> -static inline void __builtin_constant_p(int x)
>> +static inline int constant_p(int x)
>>  {
>> +#if defined(__GNUC__) || (defined(__SUNPRO_C)&&  (__SUNPRO_C>= 0x590))
>> +	return __builtin_constant_p(x);
>> +#else
>>  	return 0;
>> -}
>>  #endif
>> +}
> 
> Since __builtin_constant_p is more of a keyword than a function, does the
> magic still work when you have the extra level of indirection?

Yes.  There should be no difference since these are inlined, but in the off chance I'm wrong, I addressed your concern as:

diff --git a/include/misc.h b/include/misc.h
index 1fea73e..4ecab59 100644
--- a/include/misc.h
+++ b/include/misc.h
@@ -261,14 +261,16 @@ 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)
+#if !(defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)))
+static inline int __builtin_constant_p(int x)
 {
 	return 0;
 }



More information about the xorg-devel mailing list