On Sat, Apr 17, 2021 at 09:31:32PM +0000, David Laight wrote: > > > Upon running sparse, "warning: dubious: !x | !y" is brought to notice > > > for this file. Logical and bitwise OR are basically the same in this > > > context so it doesn't cause a runtime bug. But let's change it to > > > logical OR to make it cleaner and silence the Sparse warning. > > The old code is very likely to by slightly more efficient. > > It may not matter here, but it might in a really hot path. > > Since !x | !y and !x || !y always have the same value > why is sparse complaining at all. They both will have the same value here and any half-decent compiler know that and thus generate the same code, so no worries about efficiency. Sparse complains because the programmer's intention is not clear. Was a boolean context or a bitwise context that was meant? Maybe '||' was meant and the RHS had to be short cut? Maybe what was meant was '~x | ~y'? -- Luc