[PATCH v2] Address regressions from e8ff555b95baab66cc7d060c1e7f9fdd49d3802f

Alan Coopersmith alan.coopersmith at oracle.com
Thu Sep 22 20:02:03 PDT 2011


On 09/22/11 07:58 PM, Jeremy Huddleston wrote:
>
> 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;
>   }
>

That should work better.

Reviewed-by: Alan Coopersmith <alan.coopersmith at oracle.com>

-- 
	-Alan Coopersmith-        alan.coopersmith at oracle.com
	 Oracle Solaris Platform Engineering: X Window System



More information about the xorg-devel mailing list