Hi,
I wrote a simple rule (swap.cocci):
virtual patch
@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
I would expect it to remove a local variable only if there is a match
with swap template.
However, it generates "partial" patch on 5.11 linux code:
$ spatch --version
spatch version 1.0.8-00201-g267f9cf8cc82 compiled with OCaml version 4.11.1
$ spatch -D patch --sp-file swap.cocci mm/filemap.c
--- mm/filemap.c
+++ /tmp/cocci-output-445786-88aa66-filemap.c
@@ -2348,7 +2348,7 @@ static int generic_file_buffered_read_ge
struct file_ra_state *ra = &filp->f_ra;
pgoff_t index = iocb->ki_pos >> PAGE_SHIFT;
pgoff_t last_index = (iocb->ki_pos + iter->count + PAGE_SIZE-1) >>
PAGE_SHIFT;
- int i, j, nr_got, err = 0;
+ int i, nr_got, err = 0;
nr = min_t(unsigned long, last_index - index, nr);
find_page:
How can I improve the rule?
Thanks,
Denis
_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci