Input: touchscreen - Avoid bitwise vs logical OR warning
Subsystems (2)
PATCH 1/1 Input: touchscreen - Avoid bitwise vs logical OR warning
A new warning in clang points out a few places in this driver where a bitwise OR is being used with boolean types:
drivers/input/touchscreen.c:81:17: warning: use of bitwise '|' with boolean operands [-Wbitwise-instead-of-logical]
data_present = touchscreen_get_prop_u32(dev, "touchscreen-min-x",
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This use of a bitwise OR is intentional, as bitwise operations do not short circuit, which allows all the calls to touchscreen_get_prop_u32() to happen so that the last parameter is initialized while coalescing the results of the calls to make a decision after they are all evaluated.
To make this clearer to the compiler, use the '|=' operator to assign the result of each touchscreen_get_prop_u32() call to data_present, which keeps the meaning of the code the same but makes it obvious that every one of these calls is expected to happen.
--- drivers/input/touchscreen.c | 42 ++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 21 deletions(-)
drivers/input/touchscreen.c +21 -21
@@ -80,27 +80,27 @@ void touchscreen_parse_properties(struct input_dev *input, bool multitouch, data_present =touchscreen_get_prop_u32 (dev,"touchscreen-min-x" ,input_abs_get_min (input, axis_x), - &minimum) | -touchscreen_get_prop_u32 (dev,"touchscreen-size-x" , -input_abs_get_max (input, - axis_x) +1 , - &maximum) | -touchscreen_get_prop_u32 (dev,"touchscreen-fuzz-x" , -input_abs_get_fuzz (input, axis_x), - &fuzz); + &minimum); + data_present |=touchscreen_get_prop_u32 (dev,"touchscreen-size-x" , +input_abs_get_max (input, + axis_x) +1 , + &maximum); + data_present |=touchscreen_get_prop_u32 (dev,"touchscreen-fuzz-x" , +input_abs_get_fuzz (input, axis_x), + &fuzz);if (data_present)touchscreen_set_params (input, axis_x, minimum, maximum -1 , fuzz); data_present =touchscreen_get_prop_u32 (dev,"touchscreen-min-y" ,input_abs_get_min (input, axis_y), - &minimum) | -touchscreen_get_prop_u32 (dev,"touchscreen-size-y" , -input_abs_get_max (input, - axis_y) +1 , - &maximum) | -touchscreen_get_prop_u32 (dev,"touchscreen-fuzz-y" , -input_abs_get_fuzz (input, axis_y), - &fuzz); + &minimum); + data_present |=touchscreen_get_prop_u32 (dev,"touchscreen-size-y" , +input_abs_get_max (input, + axis_y) +1 , + &maximum); + data_present |=touchscreen_get_prop_u32 (dev,"touchscreen-fuzz-y" , +input_abs_get_fuzz (input, axis_y), + &fuzz);if (data_present)touchscreen_set_params (input, axis_y, minimum, maximum -1 , fuzz);
@@ -108,11 +108,11 @@ void touchscreen_parse_properties(struct input_dev *input, bool multitouch, data_present =touchscreen_get_prop_u32 (dev,"touchscreen-max-pressure" ,input_abs_get_max (input, axis), - &maximum) | -touchscreen_get_prop_u32 (dev, -"touchscreen-fuzz-pressure" , -input_abs_get_fuzz (input, axis), - &fuzz); + &maximum); + data_present |=touchscreen_get_prop_u32 (dev, +"touchscreen-fuzz-pressure" , +input_abs_get_fuzz (input, axis), + &fuzz);if (data_present)touchscreen_set_params (input, axis,0 , maximum, fuzz);
base-commit: a41392e0877a271007e9209e63c34cab7527eb43
Signature · 1 line
2.33.1.637.gf443b226ca
Quoted 13 lines · Nathan Chancellor
A new warning in clang points out a few places in this driver where a bitwise OR is being used with boolean types:
drivers/input/touchscreen.c:81:17: warning: use of bitwise '|' with boolean operands [-Wbitwise-instead-of-logical]
data_present= touchscreen_get_prop_u32(dev, "touchscreen-min-x",
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~This use of a bitwise OR is intentional, as bitwise operations do not short circuit, which allows all the calls to
touchscreen_get_prop_u32()to happen so that the last parameter is initialized while coalescing the results of the calls to make a decision after they are all evaluated.
Quoted 7 lines
To make this clearer to the compiler, use the '|=' operator to assign the result of each
touchscreen_get_prop_u32()call todata_present, which keeps the meaning of the code the same but makes it obvious that every one of these calls is expected to happen.
Thanks for the patch!
Quoted 75 lines
--- drivers/input/touchscreen.c | 42 ++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 21 deletions(-)drivers/input/touchscreen.c +21
-21@@ -80,27 +80,27 @@ void touchscreen_parse_properties(struct input_dev *input, bool multitouch, data_present =touchscreen_get_prop_u32 (dev,"touchscreen-min-x" ,input_abs_get_min (input, axis_x), - &minimum) | -touchscreen_get_prop_u32 (dev,"touchscreen-size-x" , -input_abs_get_max (input, - axis_x) +1 , - &maximum) | -touchscreen_get_prop_u32 (dev,"touchscreen-fuzz-x" , -input_abs_get_fuzz (input, axis_x), - &fuzz); + &minimum); + data_present |=touchscreen_get_prop_u32 (dev,"touchscreen-size-x" , +input_abs_get_max (input, + axis_x) +1 , + &maximum); + data_present |=touchscreen_get_prop_u32 (dev,"touchscreen-fuzz-x" , +input_abs_get_fuzz (input, axis_x), + &fuzz);if (data_present)touchscreen_set_params (input, axis_x, minimum, maximum -1 , fuzz); data_present =touchscreen_get_prop_u32 (dev,"touchscreen-min-y" ,input_abs_get_min (input, axis_y), - &minimum) | -touchscreen_get_prop_u32 (dev,"touchscreen-size-y" , -input_abs_get_max (input, - axis_y) +1 , - &maximum) | -touchscreen_get_prop_u32 (dev,"touchscreen-fuzz-y" , -input_abs_get_fuzz (input, axis_y), - &fuzz); + &minimum); + data_present |=touchscreen_get_prop_u32 (dev,"touchscreen-size-y" , +input_abs_get_max (input, + axis_y) +1 , + &maximum); + data_present |=touchscreen_get_prop_u32 (dev,"touchscreen-fuzz-y" , +input_abs_get_fuzz (input, axis_y), + &fuzz);if (data_present)touchscreen_set_params (input, axis_y, minimum, maximum -1 , fuzz);@@ -108,11 +108,11 @@ void touchscreen_parse_properties(struct input_dev *input, bool multitouch, data_present =touchscreen_get_prop_u32 (dev,"touchscreen-max-pressure" ,input_abs_get_max (input, axis), - &maximum) | -touchscreen_get_prop_u32 (dev, -"touchscreen-fuzz-pressure" , -input_abs_get_fuzz (input, axis), - &fuzz); + &maximum); + data_present |=touchscreen_get_prop_u32 (dev, +"touchscreen-fuzz-pressure" , +input_abs_get_fuzz (input, axis), + &fuzz);if (data_present)touchscreen_set_params (input, axis,0 , maximum, fuzz);base-commit:
a41392e0877a271007e9209e63c34cab7527eb43--
2.33.1.637.gf443b226ca
Signature · 2 lines
Thanks, ~Nick Desaulniers