[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