Messages in this thread | | | Date | Wed, 17 Feb 2021 22:31:05 +0100 (CET) | From | Julia Lawall <> | Subject | Re: [PATCH] coccinelle: misc: add swap script |
| |
> +@depends on patch@ > +identifier tmp; > +expression a, b; > +type T; > +@@ > + > +( > +- T tmp; > +| > +- T tmp = 0; > +| > +- T *tmp = NULL; > +) > +... when != tmp > +- tmp = a; > +- a = b; > +- b = tmp; > ++ swap(a, b); > +... when != tmp
In this rule and the next one, if you remove the final ; from the b = tmp line and from the swap line, and put it into context code afterwards, them the generated code looks better on cases like fs/xfs/xfs_inode.c in the function xfs_lock_two_inodes where two successive swap calls are generated.
There are also some cases such as drivers/net/wireless/ath/ath5k/phy.c in the function ath5k_hw_get_median_noise_floor where the swap code makes up a whole if branch. In this cases it would be good to remove the {}.
julia
> + > +@depends on patch@ > +identifier tmp; > +expression a, b; > +@@ > + > +- tmp = a; > +- a = b; > +- b = tmp; > ++ swap(a, b); > + > +@script:python depends on report@ > +p << r.p; > +@@ > + > +coccilib.report.print_report(p[0], "WARNING opportunity for swap()") > + > +@script:python depends on org@ > +p << r.p; > +@@ > + > +coccilib.org.print_todo(p[0], "WARNING opportunity for swap()") > -- > 2.26.2 > >
| |