From: Or Gerlitz > Sent: 01 February 2017 16:40 > On Wed, Feb 1, 2017 at 1:17 PM, David Laight <david.lai...@aculab.com> wrote: > > From: Saeed Mahameed > >> Sent: 31 January 2017 20:59 > >> From: Or Gerlitz <ogerl...@mellanox.com> > >> > >> For some reason, sparse doesn't like using an expression of type (!x) > >> with a bitwise | and &. In order to mitigate that, we use a local > >> variable. > >> > >> Since getting a typeof(bitfield) is incorrect, we cast such cases. > > ... > >> + MLX5_SET(fte_match_set_lyr_2_4, headers_c, > >> first_prio, (u8)mask- > >vlan_priority); > > > > Ugg nasty casts... > > ... > >> #define MLX5_SET(typ, p, fld, v) do { \ > >> + typeof(v) _v = v; \ > > .. > > > > Why not just 'unsigned int _v = v; > > Yeah, basically we could have allocate (use) the max size and assign. > We preferred to allocate the specific instance size and use this, as using t > he required size is cleaner.
Doesn't make a blind bit of difference. The value is promoted to 'int' before being used in the expression. You might as well do the promotion earlier. David