Lars Gullik Bjønnes <larsbj@xxxxxxxxxx> writes: > I have this code: > > -------------- > unsigned int f(unsigned int value) > { > unsigned int i = (value & 0xffff); > return (i == 0xffff ? 0xffffffff : i); > } > > > static int *arr1[10]; > > void t(unsigned int s) > { > arr1[f(s)] = 0; > arr1[f(s)] = 0; > } > ------------------ > > > When compiled with 'gcc -Wall -Wextra -c' I get a warning about > "subscript is above array bounds". > Shouldn't the -Warray-bounds only warn if will _always_ be out-of-bounds? > > Is this a false positive, or is there something that I am completely missing? > > I see this with gcc from trunk (some days ago), and with redhat gcc 4.6.2-1. The warning triggers if there is some code path in which the index is provably out of bounds. That is true of this code. I don't think I would describe this as a false positive. I think it is a case where, as the -Wall documentation says, the code should be modified to avoid the warning. Ian