Re: [PATCH v3] coccinelle: semantic patch to check for inappropriate do_div() calls

Wen Yang
2020-01-11T05:06:53Z

On 2020/1/11 12:35 上午, Markus Elfring wrote:
>> +@initialize:python@
> …
>> +def filter_out_safe_constants(str):
> …
>> +def construct_warnings(str, suggested_fun):
>
> * I suggest once more to adjust the dependency specifications for the usage
> of these functions by SmPL rules.
>

Most of the functions here are for all operation modes.

> * Can the local variable “msg” be omitted?
>
>
>> +coccilib.org.print_todo(p[0], construct_warnings("div64_ul"))
>
> I suggest again to move the prefix “div64_” into the string literal
> of the function implementation.
>

“div64_ul” indicates the function name we recommend.
As shown in the patch:

+def construct_warnings(suggested_fun):
+ msg="WARNING: do_div() does a 64-by-32 division, please consider
using %s instead."
+ return msg % suggested_fun
...
+coccilib.org.print_todo(p[0], construct_warnings("div64_ul"))

If we delete the prefix "div64_", it may reduce readability.

>
> The SmPL code for two disjunctions could become shorter.
>

You may suggest to modify it as follows:
+@@
+*do_div(f, \( l \| ul \| ul64 \| sl64 \) );

We agree with Julia:
I don't se any point to this. The code matched will be the same in both
cases. The original code is quite readable, without the ugly \( etc.

--
Regards，
Wen

> Regards,
> Markus
>