*new* check_macros: find macro precedence bugs
This check is for find code like:
#define add(a, b) a + b
x = add(1, 1) * 5
The multiply has precedence over the add so x is 6 instead of 10 at the
end.
The way this check works is that it looks at which operations sparse does
first. The problem with this approach is that it can lead to false
positives. "x = (1 + 2) + 3;" is the same as "x = 1 + (2 + 3)" so adding
or removing parenthesis doesn't cause a problem.
I made adding, multiplying, bitwise AND and bitwise OR special cases to cut
down on the number of false positives. There are still some other false
positives, but my feeling now is that it's best to just add parenthesis in
the kernel source to silence the warnings.
Signed-off-by: Dan Carpenter <error27@gmail.com>