Let's forward this to the Sparse mailing list. We're seeing a Sparse false positive testing drivers/staging/comedi/drivers/ni_pcimio.c. CHECK drivers/staging/comedi/drivers/ni_pcimio.c drivers/staging/comedi/drivers/ni_stc.h:720:26: warning: shift too big (4294967295) for type int drivers/staging/comedi/drivers/ni_stc.h:720:26: warning: shift too big (4294967295) for type int drivers/staging/comedi/drivers/ni_stc.h:720:26: warning: shift too big (4294967295) for type int drivers/staging/comedi/drivers/ni_stc.h:720:26: warning: shift too big (4294967295) for type int I have created some test code to demonstrate the problem (attached). The check_shift_count() warning is only supposed to be printed for number literals but because of the way inline functions are expanded it still complains even though channel is a variable. regards, dan carpenter
#include <stdio.h> #include <limits.h> #include <string.h> static inline unsigned ni_stc_dma_channel_select_bitfield(unsigned channel) { if (channel < 4) return 1 << channel; return 0; } static inline void filter(int channel) { if (channel < 0) return; ni_stc_dma_channel_select_bitfield(channel); } int main(void) { filter(-1); return 0; }
_______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel