[PATCH 08/10] fb: Fix build when FB_SHIFT == 6

Mark Kettenis mark.kettenis at xs4all.nl
Mon Mar 10 08:48:23 PDT 2014


> From: Adam Jackson <ajax at redhat.com>
> Date: Mon, 10 Mar 2014 11:04:32 -0400
> 
> My goodness the 24bpp code is ugly.  This failed to build:
> 
> fbbltone.c:432:6: warning: left shift count >= width of type [enabled by
> default]
>       C4_24(0, 0), C4_24(1, 0), C4_24(2, 0), C4_24(3, 0),
>       ^
> fbbltone.c:432:6: error: initializer element is not constant
> fbbltone.c:432:6: error: (near initialization for 'fbStipple24Bits[0][0]')
> 
> The warning causes the error here, because gcc will rightly refuse to
> constprop invalid expressions.  0xffffffU is only uint32_t; when
> FB_SHIFT == 6 FbBits is wider than that, so let's always cast up to
> FbBits.
> 
> Signed-off-by: Adam Jackson <ajax at redhat.com>

Reviewed-by: Mark Kettenis <kettenis at openbsd.org>

Although I wouldn't complain if you sneaked in a change that removed
the extra space after Mask24Neg

> ---
>  fb/fbbltone.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/fb/fbbltone.c b/fb/fbbltone.c
> index 434d447..ca94384 100644
> --- a/fb/fbbltone.c
> +++ b/fb/fbbltone.c
> @@ -407,8 +407,8 @@ fbBltOne(FbStip * src, FbStride srcStride,      /* FbStip units per scanline */
>  
>  #define Mask24(x,r) (Mask24Pos(x,r) < FB_UNIT ? \
>  		     (Mask24Pos(x,r) < 0 ? \
> -		      0xffffffU >> Mask24Neg (x,r) : \
> -		      0xffffffU << Mask24Check(x,r)) : 0)
> +		      ((FbBits)0xffffffU) >> Mask24Neg (x,r) : \
> +		      ((FbBits)0xffffffU) << Mask24Check(x,r)) : 0)
>  
>  #define SelMask24(b,n,r)	((((b) >> n) & 1) * Mask24(n,r))
>  
> -- 
> 1.8.5.3


More information about the xorg-devel mailing list