This version is better, thanks! Reviewed-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> What the GCC devs should have done is run their checker on real code and silence the common false positives. There are a few ways to do this. You could make ~ a special case. They already ignore truncated sign extension so they could equally well ignore truncation when all it's a 32 bits which are all set to 1. Probably the best answer is to do both. Sure, you might miss some bugs that way, but anyone relying on GCC to find *all* their bugs is a moron. regards, dan carpenter