From 3c9359dfe479a7fa1b161ad86afe571f66b23617 Mon Sep 17 00:00:00 2001 From: Dmitry Antipov Date: Sun, 24 Jun 2012 20:18:41 +0400 Subject: [PATCH] First Coccinelle semantic patch. * coccinelle: New subdirectory * coccinelle/README: Documentation stub. * coccinelle/vector_contents.cocci: Semantic patch to replace direct access to `contents' member of Lisp_Vector objects with AREF and ASET where appropriate. --- admin/ChangeLog | 9 +++++++++ admin/coccinelle/README | 3 +++ admin/coccinelle/vector_contents.cocci | 16 ++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 admin/coccinelle/README create mode 100644 admin/coccinelle/vector_contents.cocci diff --git a/admin/ChangeLog b/admin/ChangeLog index ec6448dbeee..44856f4b449 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog @@ -1,3 +1,12 @@ +2012-06-24 Dmitry Antipov + + First Coccinelle semantic patch. + * coccinelle: New subdirectory + * coccinelle/README: Documentation stub. + * coccinelle/vector_contents.cocci: Semantic patch to replace direct + access to `contents' member of Lisp_Vector objects with AREF and ASET + where appropriate. + 2012-06-22 Paul Eggert Support higher-resolution time stamps (Bug#9000). diff --git a/admin/coccinelle/README b/admin/coccinelle/README new file mode 100644 index 00000000000..48a88dbc8d8 --- /dev/null +++ b/admin/coccinelle/README @@ -0,0 +1,3 @@ +This directory contains semantic patches for Coccinelle, a program matching +and transformation tool for programs written in C. For more details, see +http://coccinelle.lip6.fr. diff --git a/admin/coccinelle/vector_contents.cocci b/admin/coccinelle/vector_contents.cocci new file mode 100644 index 00000000000..beebc2d2089 --- /dev/null +++ b/admin/coccinelle/vector_contents.cocci @@ -0,0 +1,16 @@ +// Avoid direct access to `contents' member of +// Lisp_Vector, use AREF and ASET where possible. +@expression@ +identifier I1, I2; +expression E1, E2; +@@ +( +- XVECTOR (I1)->contents[I2++] = E1 ++ ASET (I1, I2, E1), I2++ +| +- XVECTOR (I1)->contents[E1] = E2 ++ ASET (I1, E1, E2) +| +-XVECTOR (I1)->contents[E1] ++AREF (I1, E1) +) -- 2.39.5